Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 01.01.2018
Сообщений: 8

Как использовать процедуру для выбора действия

21.01.2018, 17:16. Показов 1391. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня такой вопрос "как использовать процедуру для выбора действия" я понимаю что для этого можно использовать "case" однако его нельзя использовать более 3-4 раз ибо далее ошибки, да и программа не столь удобна будет, в плане того что код смотреть...
код есть, однако я не знаю как дать понять программе чтобы был выбор, вот примерный заготовок:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
program ViSiC;
var
a,b:integer;
 
procedure hi;
begin
writeln('Добро пожаловать в программу!');
writeln('1-"a+b"');
writeln('2-"a-b"');
write('Ваш выбор: ');readln(a);
end ;
procedure vib;
begin
write('Введите значение a: ');readln(a);
write('Введите значение b: ');readln(b);
writeln('a+b=',a+b);
end;
procedure vib1;
begin
write('Введите значение a: ');readln(a);
write('Введите значение b: ');readln(b);
writeln('a-b=',a-b);
end;
begin
 
vib;
end.
как мы видим только vib и будет использовать...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.01.2018, 17:16
Ответы с готовыми решениями:

Как использовать процедуру для выбора действия и переключения между ними
Здравствуйте, мне для проекта нужно переключаться между функциями т.е. был в функции A попал в функцию B после перешёл в функцию A из...

Сделать действия со строкой в зависимости от ее длинны. Использовать процедуру.
Дана строка. Если ее длина больше 10, то оставить в строке только первые 6 символов, иначе дополнить строку символами 'o' до длины 12. (С...

Меню ресторана: как использовать Combobox для выбора блюд
Добрый день. Есть проблемка.. какой день глумлюсь с екселем, и чем дальше в лес, тем больше дров.. в общем дали такое задание, нужно...

2
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
22.01.2018, 06:33
Программу лучше всего создавать по методу нисходящей разработки.
Для начала, определится с основными действиями:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
procedure Sum;
begin
end;
 
procedure Dif;
begin
end;
 
begin
  var theEnd := False;
  repeat
    WriteLn(NewLine*5 + 'Добро пожаловать в программу!');
    WriteLn('1 - "a+b"');
    WriteLn('2 - "a-b"');
    WriteLn('0 - выход');
    WriteLn('~' * 40);
    var otvet := ReadString('Введите номер желаемого дествия:');
    if otvet.Trim.Length > 0 then
      case otvet.Trim[1] of
        '1' : Sum;
        '2' : Dif;
        '0' : theEnd := True;
      end;
  until theEnd;
end.
А затем наполнить соответствующие процедуры необходимым содержимым:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure Sum;
begin
  WriteLn(NewLine*5);
  var(a,b):=(ReadLnReal('a ='),ReadLnReal('b ='));
  WriteLnFormat('{0}+{1}={2}', a, b, a+b);
  ReadLnString(NewLine*2+'Для продолжения нажмите Enter...');
end;
 
procedure Dif;
begin
  WriteLn(NewLine*5);
  var(a,b):=(ReadLnReal('a ='),ReadLnReal('b ='));
  WriteLnFormat('{0}-{1}={2}', a, b, a-b);
  ReadLnString(NewLine*2+'Для продолжения нажмите Enter...');
end;
К примеру, если требуется создать анкету, то всегда можно что-нибудь придумать типа такого:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
function Otvet(Vopros : String; VariantOtveta : array of String; Znachen : array of Real) : Real;
begin
  WriteLn('-'*50);
  WriteLn(Vopros);
  var Sel := 0;
  foreach var Variant in VariantOtveta do
    begin
      Sel += 1;
      WriteLn(' *' + Sel + ' - ' + Variant);
    end;
  var Vibor := 0;
  repeat
    Vibor := ReadLnInteger('Выберите от 1 до ' + Sel + ' :');
  until Vibor in [1..Sel];
  Result := Znachen[Vibor-1];
end;
 
function F1(d1, d2, d3, d4, d5, d6, d7, d8 : Real) : Real := d1*-0.17956+d2*0.40778+d3*0.42102+d4*-0.50549+d5*-0.41049+d6*-0.18112+d7*0.24397+d8*-1.1129+-1.4663;
function F2(d1, d2, d3, d4, d5, d6, d7, d8 : Real) : Real := d1*-0.17140+d2*-0.30474+d3*-0.38007+d4*0.35164+d5*0.34494+d6*0.14447+d7*-0.25519+d8*0.95194+-1.07281;
 
procedure Diagnostic;
begin
  var d1 := Otvet('Пол пациента', arr('мужской', 'женский'), arr(-0.611923, 1.6297755));
  var d2 := Otvet('Форма туберкулеза', arr('Очаговый', 'Инфильтративный', 'Фиброзно-кавернозный', 'Диссеминированный', 'Другие формы'), arr(-1.677071948, -0.472185306, 0.732701337, 1.937587979, 3.1424747621));
  var d3 := Otvet('1 или 2х сторонняя локализация процесса', arr('Односторонняя', 'Двухсторонняя'), arr(-0.838548467, 1.189313839));
  var d4 := Otvet('Наличие полостей распада в легочной ткани', arr('да', 'нет'), arr(-0.461019271, 2.163244272));
  var d5 := Otvet('Лекарственная устойчивость к изониазиду', arr('да', 'нет'), arr(-2.067397222, 0.482392685));
  var d6 := Otvet('Лекарственная устойчивость к рифампицину', arr('да', 'нет'), arr(-2.364738552, 0.482392685));
  var d7 := Otvet('Сопутствующая патология в виде хронических неспецифических заболеваний легких', arr('да', 'нет'), arr(-2.718283712, 0.366884918));
  var d8 := Otvet('Вредные привычки', arr('Алкоголизм', 'Алкоголизм и курение', 'курение', 'наркомания', 'нет'), arr(-1.512227025, -0.895331767, -0.278436509, 0.33845875, 0.955354008));
 
  WriteLn('~'*50, NewLine, '~'*50);
  if F1(d1, d2, d3, d4, d5, d6, d7, d8) > F2(d1, d2, d3, d4, d5, d6, d7, d8) then
    WriteLn(
      'Пациент с высокой степенью вероятности имеет риск хронического течения туберкулезного процесса.', NewLine,
      NewLine,
      'Рекомендовано:', NewLine,
      'I. Интенсивная фаза химиотерапии:', NewLine,
      '1) Лечение в условиях стационара.', NewLine,
      '2) Обязательная консультация хирурга с решением вопроса о раннем оперативном лечении.', NewLine,
      'II. Фаза продолжения:', NewLine,
      '1) В условиях дневного стационара или амбулаторно контролируемая.', NewLine,
      '2) Социальная поддержка в виде продовольственных пайков.')
  else
    WriteLn(
      'Пациент с высокой степенью вероятности не имеет риска хронизации туберкулезного процесса.', NewLine,
      NewLine,
      'Рекомендовано:', NewLine,
      'I. Интенсивная фаза химиотерапии:', NewLine,
      '1) Лечение в условиях стационара или дневного стационара.', NewLine,
      '2) Консультация хирурга по показаниям.', NewLine,
      'II. Фаза продолжения:', NewLine,
      '1) Контролируемая химиотерация в амбулаторных условиях.');
end;
 
begin
  repeat
    Diagnostic;
  until Otvet('Желаете повторить диагностику?', arr('ДА', 'НЕТ'), arr(+1.0, -1.0)) < 0;
  WriteLn('='*50, NewLine, 'Программа завершила свою работу.');
end.
1
0 / 0 / 0
Регистрация: 01.01.2018
Сообщений: 8
23.01.2018, 19:25  [ТС]
Дааа, теперь и не скажу что паскаль такой лёгкий... Однако я должен понять как это устроено)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.01.2018, 19:25
Помогаю со студенческими работами здесь

Функция с таймером выбора действия или выполнение действия по умолчанию
Нужна функция которая выполнит действие по умолчанию, если пользователь не ввел в интерактивное меню ничего. Ниже приведен пример: ...

Использование ComboBox для выбора арифметического действия
Помогите разобраться, что не так я сделал. Хочу выбирать тип арифметической операции при помощи ComboBox. Но что-то не получается. ...

ВПР, ЕСЛИ. Как для выбора номера столбца в функции ВПР для региона использовать функцию ЕСЛИ()
Здравствуйте. Не могу написать формулу так, чтобы ВПР брала % прироста из обоих столбцов &quot;Восток и Юг&quot; и &quot;Центр и...

Как отменить закрытие JFileChooser после выбора действия?
пробовал через accept(file f) - не вышло

Что использовать для выбора директории
Здравствуйте. Подскажите какой - нибудь действующий вариант выбора директории (папки), и возможно ли это делать средствами системы?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru