RosettaCodeData/Task/Menu/Modula-2/menu.mod2

61 lines
1.5 KiB
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
MODULE Menu;
FROM InOut IMPORT WriteString, WriteCard, WriteLn, ReadCard;
2024-10-16 18:07:41 -07:00
FROM STextIO IMPORT ReadChar, SkipLine;
FROM CharClass IMPORT IsNumeric, IsControl, IsWhiteSpace;
2023-07-01 11:58:00 -04:00
CONST StringLength = 100;
MenuSize = 4;
TYPE String = ARRAY[0..StringLength-1] OF CHAR;
2024-10-16 18:07:41 -07:00
PROCEDURE MenuF(): String;
VAR
menu : ARRAY[0..MenuSize] OF String;
inp : CHAR;
selection, index : CARDINAL;
2023-07-01 11:58:00 -04:00
BEGIN
menu[1] := "fee fie";
menu[2] := "huff and puff";
menu[3] := "mirror mirror";
menu[4] := "tick tock";
2024-10-16 18:07:41 -07:00
selection := 0;
WHILE selection=0 DO
FOR index := 1 TO HIGH(menu) DO
WriteString("[");
WriteCard( index,1);
WriteString( "] ");
WriteString( menu[index]);
WriteLn;
END;(*of FOR*)
inp := '';
WriteString("Choose what you want : ");
ReadChar(inp);
SkipLine;
IF IsNumeric(inp) THEN
CASE inp OF
'1' : selection := 1 |
'2' : selection := 2 |
'3' : selection := 3 |
'4' : selection := 4 |
ELSE ;
selection := 0;
END;
IF (selection <= HIGH(menu)) AND (selection > 0) THEN
RETURN menu[selection];
END (*of IF*)
ELSIF IsWhiteSpace(inp) OR IsControl(inp) THEN
RETURN "";
END;
END;
END MenuF;
2023-07-01 11:58:00 -04:00
2024-10-16 18:07:41 -07:00
BEGIN
WriteString(MenuF());
WriteLn;
2023-07-01 11:58:00 -04:00
END Menu.