Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
6 / 6 / 9
Регистрация: 16.04.2015
Сообщений: 121
1

Как в параметрах процедуры пропустить переменную по умолчанию?

19.03.2016, 23:34. Показов 917. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
a и b заданы по умолчанию, задав Sum(k, 8). 8 будет присвоена a, но я хочу пропустить a и присвоить восемь к b.
Как это можно сделать?
Можно как-нибудь получить значение по умолчанию из параметров функции в основной программе?

Pascal
1
2
3
4
5
6
7
8
9
10
procedure Sum(var sum: integer; a: integer := 4; b: integer := 1);
begin
  sum := a + b;
end;
 
begin
var k := 0;
Sum(k,8);
print(k);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.03.2016, 23:34
Ответы с готовыми решениями:

Как пропустить все строки из файла, который импортировал через 1 переменную
Как пропустить все строки из файла, который импортировал через 1 переменную? Вообщем, в...

как правильно передать значение функции в последующие процедуры во входных параметрах.
у меня есть код программы в которой нужно упорядочить строки матрицы построчно по возрастанию.я...

Значение по умолчанию в параметрах функции
В общем, изучаю односвязные списки и дело в том, что имеется небольшая проблема, при самом вызове...

Зачем в параметрах реализации процедуры записываем -1?
procedure TMainForm.ncAddObject(X: Integer = -1; Y: Integer = -1);

7
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 863
19.03.2016, 23:42 2
Во первых у вас процедура, а не функция. Во вторых, имя процедуры не должно совпадать с именем параметра процедуры.И раз так хочется поменять -
Pascal
1
procedure Sum(var sum: integer;  b: integer := 1; a: integer := 4);
0
6 / 6 / 9
Регистрация: 16.04.2015
Сообщений: 121
20.03.2016, 00:14  [ТС] 3
capricornus CF,
1) может быть и описался, но я хотел спросить про функции и процедуры в общем.
2) они на один символ отличаются, да и ладно, все четко работает
3) я имел ввиду не решение конкретной задачи, где можно просто переставить параметры (я работаю над проектом, вот там хоть ставь, хоть переставляй, но это проблему не решит), я хотел спросить как можно переменную-параметр "a" оставить в виде "по умолчанию", а "b" переназначить. Может есть какая-то хитрость.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
20.03.2016, 00:39 4
Цитата Сообщение от Radmir2015 Посмотреть сообщение
Может есть какая-то хитрость.
Нет такой хитрости. Для того, чтобы это стало возможно, нужно так называемое именованное сопоставление (по крайней мере в терминах ЯП Ада это называется именно так). Тогда можно сделать то, что хочется:

Код
   procedure Sum (s : out Integer; a : Integer := 4; b : Integer := 1) is
   begin
      s := a + b;
   end Sum;

-- вызов
   
   Sum (s, b => 8); // s = 4 + 8
В Паскале именованного сопоставления нет. Поэтому невозможно то, что хочется выше.
0
6 / 6 / 9
Регистрация: 16.04.2015
Сообщений: 121
20.03.2016, 00:42  [ТС] 5
volvo, а на каком языке вы написали?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
20.03.2016, 00:49 6
Конкретно мой код - на Аде. Но Named Arguments есть и в C#, и во многих других языках. Только вот разработчики Паскаля не подумали об их введении.
0
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 863
20.03.2016, 01:01 7
Цитата Сообщение от Radmir2015 Посмотреть сообщение
2) они на один символ отличаются, да и ладно, все четко работает
Регистр не имеет значения - они одинаковы. Если бы у вас была функция - отгадайте что бы произошло?
0
6 / 6 / 9
Регистрация: 16.04.2015
Сообщений: 121
20.03.2016, 01:50  [ТС] 8
capricornus CF, но у меня не функция, поэтому
Цитата Сообщение от capricornus CF Посмотреть сообщение
Во вторых, имя процедуры не должно совпадать с именем параметра процедуры
не верно.
0
20.03.2016, 01:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.03.2016, 01:50
Помогаю со студенческими работами здесь

Как перенести переменную из процедуры?
по идее при нажатии какой-либо из клавиш-стрелок должен рисоваться танк в присвоенном направлении....

Процедуры: записать в переменную А минимальное из значений А и В, а в переменную В - максимальное
Описать процедуру minmax (a,b) что записывает в переменную А минимальное из значений А и В, а в...

Как можно взять переменную из другой процедуры?
Пожалуйста подскажите как можно взять переменную из другой процедуры(и можно ли вообще?)? Пример:...

Не работает Setlength для динамических массивов, если в параметрах процедуры стоят массивы на вход
Не работает Setlength для динамических массивов, если в параметрах процедуры стоят массивы на вход....


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru