Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 13.09.2009
Сообщений: 14
1

Что возвращает функция?

28.05.2012, 09:15. Показов 949. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Прилетела мне задача - восстановить алгоритм задачи из дельфийского кода и перекинуть его вместе с интерфейсом на С#. С интерфейсом проблем не возникло, а вот с алгоритмом... Вобщем споткнулся на следующем коде

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Function SearchLine (HeadUcas:UcasPtr; Num,ii:integer):boolean;
var
  HlamPtr: UcasPtr;
begin
  while HeadUcas<>nil do
    begin
      if HeadUcas.vertex=Num then
        begin
          HlamPtr:=HeadUcas.left;
          while HlamPtr<>nil do
            begin
              if HlamPtr.vertex=ii then
                begin
                  SearchLine:=False;
                  Exit{(SearchLine)}; //Возвратиться можем здесь
                end;
              HlamPtr:=HlamPtr.next;
            end;
          SearchLine:=True;
          Exit{(SearchLine)};//...а можем здесь
        end;
      HeadUcas:=HeadUcas.next;
    end
end;
Вопрос: Что возвращает функция, если не попадает в два отмченных комментами состояния???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2012, 09:15
Ответы с готовыми решениями:

Что возвращает функция?
Была получена программа. Вот одна из функций что там используется: uchar* chess(uchar m,//адрес...

Что возвращает функция?
Всем привет. Не могу понять, что возвращает функция при вызове. Вот сама функция: private...

Что возвращает функция?
Вот код : class Token { public: char kind; Token() {} Token(char a) { kind = a; } };

Что возвращает функция?
Здравствуйте, помогите пожалуйста. Я не знаком с PHP, но стала задача воспроизвести код на .NET. ...

8
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
28.05.2012, 10:01 2
Обычно компилятор такие вещи не пропускает. Здесь результат может быть неопределён и не зная о чём речь нельзя сказать, каким он должен быть. Но, по идее, в этом случае на выходе будет False.
1
0 / 0 / 1
Регистрация: 13.09.2009
Сообщений: 14
28.05.2012, 10:06  [ТС] 3
Спасибо! Я вычитал в одной статье, что для строковых функций переменная Result хранит в себе результат предыдущего вызова функции, т.е. при циклическом вызове в начале выполнения Result не пустая строка, а содержит значение предыдущего возвращения. Я попытался сделать эту функцию в С# согласно такой лоигке, но результат расчёта хотя и изменился, всё равно остался плачевным
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,432
Записей в блоге: 8
28.05.2012, 10:09 4
Цитата Сообщение от Одиночка Посмотреть сообщение
Но, по идее, в этом случае на выходе будет False.
Это все "надежда на лучшее". Эмбаркадеро явно говорит:
If the function exits without assigning a value to Result or the function name, then the function's return value is undefined.
Сегодня True, завтра False... Оно кому надо?

Добавлено через 1 минуту
Цитата Сообщение от rust1974 Посмотреть сообщение
Я вычитал в одной статье, что для строковых функций переменная Result хранит в себе результат предыдущего вызова функции
Это неправда. Можно ссылку на статью?
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
28.05.2012, 10:10 5
Я не думаю, что это заложено в процедуру. Это ошибка, но для компилятора не фатальная. Поэтому нужно, зная, что должна делать функция, установить выходное значение на этот случай.
0
0 / 0 / 1
Регистрация: 13.09.2009
Сообщений: 14
28.05.2012, 10:15  [ТС] 6
Цитата Сообщение от UI Посмотреть сообщение
Это все "надежда на лучшее". Эмбаркадеро явно говорит: Сегодня True, завтра False... Оно кому надо?

Добавлено через 1 минуту
Это неправда. Можно ссылку на статью?
Пожалуйста.

http://www.delphikingdom.com/a... logid=1435
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,432
Записей в блоге: 8
28.05.2012, 10:26 7
rust1974, там не написано, что
Цитата Сообщение от rust1974 Посмотреть сообщение
строковых функций переменная Result хранит в себе результат предыдущего вызова функции
, там написано, что "возможны условия, при которых...", бла-бла-бла. Это если даже и так - то чтобы использовать подобное поведение - надо быть просто отмороженным Потому как отлаживать замучаешься, если чуть-чуть видоизменишь программу.
0
0 / 0 / 1
Регистрация: 13.09.2009
Сообщений: 14
28.05.2012, 10:33  [ТС] 8
Цитата Сообщение от UI Посмотреть сообщение
rust1974, там не написано, что
, там написано, что "возможны условия, при которых...", бла-бла-бла. Это если даже и так - то чтобы использовать подобное поведение - надо быть просто отмороженным Потому как отлаживать замучаешься, если чуть-чуть видоизменишь программу.
Ну да, возможны, просто у меня в алгоритме как раз идёт циклический вызов приведённой функции, поэтому я слово "возможны" просто опустил А с тем, что подобное поведение используют законченные отморозки, полностью согласен Надо быть не просто отморозком, а пещерным отморозком
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
28.05.2012, 10:41 9
Согласен с UI. Про функцию можно сказать, что она написана неправильно.
---
А на счёт значения, которое возвращает функция - как это значение зависит от вызывающего кода, предлагаю убедиться на таком примере:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
function ShowText : String;
begin
  ShowMessage(Result);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  S : String;
begin
  S := '12345';
  S := ShowText;
end;
Если выполнить этот код, то будет показано сообщение с текстом: "12345". Это справедливо для динамических типов: String, WideString, динамических массивов, вариантов. Для других типов возвращаемое значение просто считается неопределённым, если оно не инициализировано в теле функции..
Поэтому в теле функции всегда нужно инициализировать переменную Result - независимо от типа.
0
28.05.2012, 10:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.05.2012, 10:41
Помогаю со студенческими работами здесь

Что возвращает эта функция?
Что возвращает эта функция? function getPos; begin getPos:=x and y; end;

Обьясните, что возвращает функция
Function min(d,b:integer); begin if d&gt;=b then min:=b else min:=d; end;

Что возвращает данная функция?
int debug1() { asm mov eax,fs: asm mov eax, asm movzx eax,byte ptr }

Что возвращает эта функция?
Здравствуйте. Объясните, пожалуйста.. вот код: private Product inputProduct() {...


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

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