Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Как создать меню в Паскале ?

Автор: yutkatch 26.01.2005 15:34

Дано много прцедур и Функций , надо составить Меню , так , что бы каждой процедуре или финкции соотвествовала даная цифра и при вводе этой цифры - выполнялась даная процедура(функция).

И еще такой вопрос , как его зациклить , что бы после выполнения некой процедуры(функции) опять появлялось МЕНЮ . И только при нажатии "Выход", программа закончила работу ??

Ув. Админы, Модераторы Я прошу , мне дать ссылку , если такое решение задачи уже есть на вашем форуме!!!
Если нет , то прошу помогите разобратся с этой задачей! unsure.gif

Автор: volvo 26.01.2005 15:42

yutkatch
Ссылки надо искать. Для этого существует кнопка "Поиск"...
http://forum.pascal.net.ru/index.php?act=Search&f=11

Вот малая часть того, что поиск выдал:

http://forum.pascal.net.ru/index.php?showtopic=3459&view=findpost&p=31026
http://forum.pascal.net.ru/index.php?showtopic=3243&view=findpost&p=29199
http://forum.pascal.net.ru/index.php?showtopic=3222&view=findpost&p=28880

Автор: klem4 26.01.2005 15:42

Цитата(yutkatch @ 26.01.05 11:34)
Дано много прцедур и Функций  , надо составить Меню  , так , что бы каждой процедуре или финкции соотвествовала  даная цифра и при вводе этой цифры - выполнялась даная процедура(функция).




Очень простой, но далеко не лучший вариант :

Код
var ch:char;
Begin
  ch:=readkey;
  case ch of
  '1' : Имя_процедуры1;
  '2' : Имя_функции2;

  ...
  end;

Автор: yutkatch 26.01.2005 16:31

Сенкс .....! smile.gif

Автор: klem4 26.01.2005 16:59

!!! то что я написал, годится только в том случае, если кол-во процедур у тебя не более 10! так как char воспринимает только один символ, тоесть в случае с цифрами (0..9)

Тогда по простому еще можно так

Код
var
  num:byte;

begin
  Readln(num);
  case num of
  1: Имя_процедуры
  2:
   ...
  end;


Это сосвем примитивные способы, но в случае маленьких ,не сложных программ, годятся , мне кажется smile.gif

Автор: volvo 26.01.2005 17:12

yutkatch

Цитата
как его зациклить , что бы после выполнения некой процедуры(функции) опять появлялось МЕНЮ

Что-то типа этого:
Код

var
 num:byte;
 Done: Boolean;

begin
 done := False;
 repeat
   { Здесь - вывод меню }
   Readln(num);
   case num of
   1: Имя_процедуры
   2:
    ...
   9: Done := True; { Выход }
   end;
 until done; { Если выбран выход - цикл заканчивается... }
end.

Автор: Werwolf86 29.01.2005 12:53

Давай мыло...вышлю)) правда есть две процедурки на асме))
;)

Автор: Nemo 29.01.2005 18:04

Завести массив указателей, а потом вызывать их по индексам (индекс - ввденное число)

Автор: Altair 29.01.2005 18:08

Не рационально в плане использования памяти. (4x(кол-во функций)) байт займет такой массив...

Автор: volvo 29.01.2005 18:21

Nemo, в следующий раз прежде чем что-то постить, подумайте, какой должна быть программа, чтобы использование Вашего меню было рационально...

Автор: Nemo 29.01.2005 18:31

Цитата
Nemo, в следующий раз прежде чем что-то постить, подумайте, какой должна быть программа, чтобы использование Вашего меню было рационально...


Можно поподробней: что не так?

Автор: volvo 29.01.2005 18:35

Цитата
что не так?

Пример. У меня есть программа из 4-х функций (25 строк), и я хочу в нее добавить простейшее меню... Есть мне смысл пользоваться таким меню? Каков полный размер Вашего исходника?

Автор: Nemo 29.01.2005 20:58

Размер 21.1 KB. Но это из-за использования объекта TBigCur. Я не предлагал целиком использовать мое меню, я лишь хотел показать, как можно вызывать функцию по ее индексу (это нажатие клавиши или что угодно). Тут нужно уже самому думать, как это лучше применить чтобы использование моего "меню было рационально... "

Автор: klem4 29.01.2005 21:14

Nemo , я думаю Volvo имел в виду не размер исходника в килобайтах, а кол-во строк в программе smile.gif

Автор: Nemo 29.01.2005 22:32

Цитата
Nemo , я думаю Volvo имел в виду не размер исходника в килобайтах, а кол-во строк в программе


Странно, конечно размер измерять в строках, но пусть даже так...

Автор: klem4 29.01.2005 22:46

Цитата
Странно, конечно размер измерять в строках, но пусть даже так...


возможно, что я и не прав.

Автор: Jahnerus 30.01.2005 19:00

;) Кажется принято измерять размер исходника количеством использованных операторов (не беру в расчёт "+","-" и т.д. в одном выражении)... и если следовать нормальному стилу программирования и не пихать всё в одну строчку то можно сказать что и количеством строк.