Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Научите меня создавать функцию, Объяснить новичку доступным языком. 
V
    Опции темы
Hellen
Дата 28.1.2009, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 3.7.2006
Где: Москва

Репутация: 1
Всего: 3



Правильно я понимаю: - 
Функция служит для хранение одной или несколько процедур.
Я пишу процедуры, запихиваю в функцию и по мере надобности вызываю их......???
Расскажите пжлста,  или лучше пример, где я объявляю и тд.
В каких ситуациях необходимо создавать классы? и как создавать.
Опять же пример помог бы.......

Спасибо!

PM MAIL   Вверх
SneG0K
Дата 28.1.2009, 21:33 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 3
Всего: 54



Эммм... Классы тебе пока рановато будет.

А вот тебе пример самой простой функции, которая возвращает квадрат от переданного ей числа
Код

{$APPTYPE CONSOLE}

function quad(number:integer):integer; // Обьявляем функцию
begin // Начало тела функции
  Result := number * number; // Result служит для возврата значения.
end;  // Конец 

begin
  writeln(quad(15)); // Вызываем функцию и выводим результат
end.


А вообще возьми любой справочник по паскалю и сразу все поймешь.

Это сообщение отредактировал(а) SneG0K - 29.1.2009, 01:43
PM WWW Skype   Вверх
Hellen
Дата 28.1.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 3.7.2006
Где: Москва

Репутация: 1
Всего: 3



Функцию где объявляем? 
PM MAIL   Вверх
Данкинг
Дата 28.1.2009, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Hellen, так сколько и какие именно книги по Дельфи прочитала? smile 

Цитата(Hellen @  28.1.2009,  21:55 Найти цитируемый пост)
Функцию где объявляем?  

Что значит где? В программе.  smile 

Код

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    BitBtn1: TBitBtn;
    SpeedButton1: TSpeedButton;
    Opener: TOpenDialog;
    Label1: TLabel;
    Conn: TADOConnection;
    ...
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    function is_date(sss:string):boolean;//наши функции
    function is_ch(sss:string):boolean;
    function oneto25(sss:string):string;
  end;


Добавлено через 46 секунд
Цитата(Hellen @  28.1.2009,  21:16 Найти цитируемый пост)
Функция служит для хранение одной или несколько процедур.

 smile  smile  smile  smile  smile 

Это сообщение отредактировал(а) Данкинг - 28.1.2009, 22:02


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Hellen
Дата 28.1.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 168
Регистрация: 3.7.2006
Где: Москва

Репутация: 1
Всего: 3



Код

public
  function proba(sss:string):string;

  end;
 Почему выдает ошибку?

Добавлено через 4 минуты и 12 секунд
текст ошибки:-
Unsatisfied forward or external declaration: 'TForm........

Добавлено через 5 минут и 44 секунды
может её в типе надо сначало описать?
PM MAIL   Вверх
Данкинг
Дата 28.1.2009, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Hellen @  28.1.2009,  22:39 Найти цитируемый пост)
Почему выдает ошибку?

Потому что надо было всё же книжки для начала почитать  заголовок функции ты объявила, а саму функцию (и чего ты от неё хочешь) не написала.  smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Christoph
Дата 28.1.2009, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



ыыы эта девочка, меня напоминает  smile 


--------------------
user posted image
PM MAIL ICQ   Вверх
Christoph
Дата 29.1.2009, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Цитата(Данкинг @ 28.1.2009,  22:01)
Hellen, так сколько и какие именно книги по Дельфи прочитала? smile 

Цитата(Hellen @  28.1.2009,  21:55 Найти цитируемый пост)
Функцию где объявляем?  

Что значит где? В программе.  smile 

Код

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    BitBtn1: TBitBtn;
    SpeedButton1: TSpeedButton;
    Opener: TOpenDialog;
    Label1: TLabel;
    Conn: TADOConnection;
    ...
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    function is_date(sss:string):boolean;//наши функции
    function is_ch(sss:string):boolean;
    function oneto25(sss:string):string;
  end;


Добавлено @ 22:02
Цитата(Hellen @  28.1.2009,  21:16 Найти цитируемый пост)
Функция служит для хранение одной или несколько процедур.

 smile  smile  smile  smile  smile

Это ты объявил метод, а функцию стоило бы объявить за пределами класса 


Код

type
  TForm1 = class(TForm)
   ...
end;
  function Fun: Integer;  // описание функции

implementation
{$R *.dfm}

// реализация этой функции
function Fun:Integer;
begin
  Result:=5;  // Вот тут идет само тело функции, тут можешь писать любой код
end;



функция - это подпрограмма, которое после завершения возращает значение

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

Код

{$APPTYPE CONSOLE}

function quad(number:integer):integer; // Обьявляем функцию
begin // Начало тела функции
  Result := number * number; // Result служит для возврата значения.
end;  // Конец 

begin
  writeln(quad(15)); // Вызываем функцию и выводим результат
end.




Это сообщение отредактировал(а) Christoph - 29.1.2009, 00:31


--------------------
user posted image
PM MAIL ICQ   Вверх
Данкинг
Дата 29.1.2009, 00:36 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Christoph @  29.1.2009,  00:22 Найти цитируемый пост)
функция - это подпрограмма, которое после завершения возращает значение

А на C++ есть даже функции, которые ничего не возвращают, т.е. void. smile

Добавлено через 38 секунд
Цитата(Christoph @  29.1.2009,  00:22 Найти цитируемый пост)
Это ты объявил метод, а функцию стоило бы объявить за пределами класса 

Ну да, но суть ясна. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Christoph
Дата 29.1.2009, 00:45 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



А можно такое и на делфи...хотя имхо чуть глупо

Код

function Fun(i:integer):integer;
begin
  ShowMessage(IntToStr(i));
end;


Функция ничего не возращает)


--------------------
user posted image
PM MAIL ICQ   Вверх
THandle
Дата 29.1.2009, 01:13 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Эта функция возвращает результат в виде значения типа Integer. 
в с++ void функции это, считай, наши процедуры. 
вообще - функция эта та же самая процедура, толька возвращающая результат. Например в математике в той же задана функция y = f(x), f - функция, x - параметр функции, у - результат. 
вообще народ тут о книжках правильно говорит, надо читать)))

зы: первый пост с телефона)))     
PM   Вверх
SneG0K
Дата 29.1.2009, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 3
Всего: 54



Так, вот тока без наездов. С телефона не удобно писать было.

Начни с простого. С юнитов, из чего они состоят и т.д. Создавай *.dpr файл и в нем пиши. А то формы далеко не доведут.
PM WWW Skype   Вверх
Akella
Дата 29.1.2009, 02:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 8
Всего: 329



Код

unit uOptions;

interface

uses
  Windows, Messages, SysUtils, 

type
  TfmOptions = class(TForm)
    dxStatusBar1: TdxStatusBar;
    cxGroupBox1: TcxGroupBox;
    vgOptions: TcxVerticalGrid;
    vgOptionsCategoryFTP: TcxCategoryRow;
    btnApply: TcxButton;
    btnCancel: TcxButton;
    btnOK: TcxButton;
...
  private

    procedure GetProfiles();
    procedure ReadParams();
  public

    procedure SaveOptions();
  end;

var
  fmOptions: TfmOptions;

implementation

{$R *.dfm}



procedure TfmOptions.GetProfiles();
begin
 with TRegistry.Create do
   try
     RootKey := HKEY_CURRENT_USER;
     OpenKey(ProfilesPath, True);
     GetKeyNames(TcxComboBoxProperties(vgOptionsProfiles.Properties.EditProperties).Items);
   finally
     CloseKey;
     Free;
   end;
end;


procedure TfmOptions.ReadParams();
begin
//твой код
end;




Цитата(Hellen @  28.1.2009,  21:16 Найти цитируемый пост)
Функция служит для хранение одной или несколько процедур.
Я пишу процедуры, запихиваю в функцию и по мере надобности вызываю их......???


Нет, основное отличие функции от процедуры в том, что функция возвращает какой-то результат
например
Код

function GetValue(a,b:integer):integer;

function GetValue(a,b:integer):integer;
begin
  result := a+b;
end;


c := GetValue(10, 20);// в переменной с будет 30


Добавлено через 53 секунды
А процедура не может возвращать никаких результатов, в ней могут происходить какие-то действия,  но результатов она не вернёт.
PM MAIL   Вверх
Данкинг
Дата 29.1.2009, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(THandle @  29.1.2009,  01:13 Найти цитируемый пост)
в с++ void функции это, считай, наши процедуры. 

Но, как я понимаю, в C++ понятия "процедура" всё же нет. smile 

И осмелюсь повторить свой вопрос:  smile 
Цитата(Данкинг @  28.1.2009,  22:01 Найти цитируемый пост)
Hellen, так сколько и какие именно книги по Дельфи прочитала?

 smile

Добавлено через 6 минут и 9 секунд
Цитата(SneG0K @  28.1.2009,  21:33 Найти цитируемый пост)
А вообще возьми любой справочник по паскалю и сразу все поймешь.

Взять мало, ещё нужно этот справочник осилить. smile  smile  smile  smile  smile 

А вообще, прикольная тема. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
de_Nis
Дата 29.1.2009, 12:09 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старательный
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 19.10.2006
Где: Молдова

Репутация: нет
Всего: 6



Hellen, скачай электронную книжку 
Культин Н. Б.  Основы программирования в Delphi 7 (598 c).pdf
В ней прочти раздел "Стандартные функции" (с. 70) и "Глава 6. Процедуры и функции" (с.183). Очень доступно изложен материал. (Неплохо прочесть эту книгу всю, мне очень понравилась).
Думаю, вопросов в этой теме задавать больше не будешь, так как все станет ясно и понятно.
--------------------
Несчастлив не тот, у кого ничего нет, а тот, кто ничего не хочет…
PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0621 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.