Функция

Автор работы: Пользователь скрыл имя, 07 Января 2014 в 12:44, реферат

Краткое описание

Кез келген программаның алғашқы жолы PROGRAM сөзінен басталатын оның тақырыбынан тұрады.Одан кейін программаның ішкі объектілерінің Сипатталу бөлімі жазылады және begin және end сөздерімен қоршалған операторлар бөлімі болуы керек.

Прикрепленные файлы: 1 файл

Кез келген программаның алғашқы жолы PROGRAM сөзінен басталатын оның тақырыбынан тұрады.docx

— 76.44 Кб (Скачать документ)

Әмбебап контейнерлер ретінде  Delphi ортасы келесі компонентерді үсынады:

GroupBox  - тоб;

Panel  - тақташа;

ScrollBox  - қарап шығу белдеулерімен қамтылған аймақ;

Frame  - фрейм.

Жалпы  контейнер ретінде  форма да  қолданылады. Форма - оның бетінде орналасқан барлық компоненттердің  иесі болып саналады.

Фреймдер

Фрейм (TFrame) - бетіне басқа компоненттерді орналастыруға болатын контейнер ретінде қолданылады.  Фреймді қолданудың айырмашылығы -  оның өзінің   басқа бір контейнерде орналасуының мүмкіндігі,  мысалы формада немесе тақташада (Panel). Фреймді қолданудың негізгі мақсаты - программаның терезесін әдемі және көрнекі түрде шығару.

Фрейммен жұмыс атқару келесі екі кезеңнен тұрады:

Фреймді құрастыру;

Фреймді формаға немесе Panel - ге орналастыру.

Фреймді құрастыру үшін File=> New Frame опцияларын таңдау керек, сол сәтте экран бетіне  фреймнің  бос терезесі шығады және жобаның құрамына жаңа фрейм қосылып тұрады. Енді фреймнің бетіне қажетті басқару элементттерін орналастыруға және  оқиғаларға сезіндіру үзінділерін құрастыруға болады. Фрейм және формамен жұмыс атқару ұқсас болып келеді.

Формаға фреймді орналастырғанда  жобаның Uses бөлімінде автоматты түрде фрейм модулінің сілтемесі көрсетіледі, ал форма класының анықтамасына  (Type сөзімен басталған бөлімінде ) фрейм элементттерінің оқиғаларын өңдеуші үзінділеріне сілтемелер қосылып отырады.

       Есептеуіш техниканың қарқынмен дамуы тиімді программалық құралдарды жасау – объектілі бағдарланған программалау жүйелерінің жасалуына әкелді. Жылдам құру жүйесінің негізіне (RAD – Rapid Application Development – қосымшаларды жылдам құру ортасы) визуалды жобалау мен оқиғалы объектілі бағдарланған программалау технологиясы алынған. Мұндай программалаудың мәні – программа жасаушы құрал жұмыстың көп бөлігін өзі атқарып, программистке диалог терезелерін құрастыру мен оқиға өңдеушіні құру жұмыстарын қалдырды. RAD жүйелерінің ішінде Borland Delphi және Visual Basic орталары әртүрлі программалар құруға мүмкіндік береді: қарапайым бір терезелік қосымшалардан бастап, үлестірілген мәліметтер қорын басқару программаларына дейін. Borland Delphi ортасындағы программалау тілі Object Pascal тілі.

Программалау іскерлігін үйрену үшін нақты есептер шығарып, программасын жаза білу қажет. Ол үшін программалау тілі мен оны құру ортасын  меңгеру керек. Объектілі бағдарланған программалау жүйелерінде программалаудағы негізгі ерекшелік алдымен программалау синтаксисі мен компоненттерді пайдалануды  үйренуде болып табылады.

қатты қайтарады. Қарсы жағдайда Felse.Close (f) – ашылған файлды жабу үшін қолданады

 

 

 

 

 

 

 

 

 

 

 

            Функций.

            Вызов функций

 

Функция вызывается при вычислении выражений. При вызове ей передаются определенные аргументы, функция выполняет  необходимые действия и возвращает результат. Программа на языке Си++ состоит, по крайней мере, из одной  функции - функции main. С нее всегда начинается выполнение программы. Встретив имя функции в выражении, программа вызовет эту функцию, т.е. передаст управление на ее начало и начнет выполнять операторы. Достигнув конца функции или оператора return - выхода из функции, управление вернется в ту точку, откуда функция была вызвана, подставив вместо нее вычисленный результат.

 

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

 

Функция sqrt с одним аргументом - вещественным числом двойной точности, возвращает результат типа double :

double sqrt(double x);

 

Функция sum от трех целых аргументов возвращает целое число.

int sum(int a, int b, int c);

 

Объявление функции называют иногда прототипом функции. После того, как функция объявлена, ее можно  использовать в выражениях:

double x=sqrt(3)+1;

sum(k,l,m)/15;

 

Если функция не возвращает никакого результата, т.е. она объявлена  как void, ее вызов не может быть использован как операнд более сложного выражения, а должен быть записан сам по себе:

func(a,b,c);

 

Определение функции описывает, как она работает, т.е. какие действия надо выполнить, чтобы получить искомый  результат. Для функции sum, объявленной выше, определение может выглядеть следующим образом:

int sum(int a, int b, int c) {

 int result;

 result = a + b + c;

 return result;

}

 

Первая строка - это заголовок  функции, он совпадает с объявлением  функции, за исключением того, что  объявление заканчивается точкой с  запятой. Далее в фигурных скобках  заключено тело функции - действия, которые данная функция выполняет.Аргументы a, b и c называются формальными параметрами. Это переменные, которые определены в теле функции (т.е. к ним можно обращаться только внутри фигурных скобок). При написании определения функции программа не знает их значения. При вызове функции вместо них подставляются фактические параметры - значения, с которыми функция вызывается. Формальные параметры принимают значения фактических аргументов, заданных при вызове, и функция выполняется. Первое, что мы делаем в теле функции - объявляем внутреннюю переменную result типа целое. Переменные, объявленные в теле функции, также называют локальными. Это связано с тем, что переменная result существует только во время выполнения тела функции sum. После завершения выполнения функции она уничтожается - ее имя становится неизвестным, и память, занимаемая этой переменной, освобождается.Вторая строка определения тела функции - вычисление результата. Сумма всех аргументов присваивается переменной result. Отметим, что до присваивания значение result было неопределенным (то есть значение переменной было неким произвольным числом, которое нельзя определить заранее).Последняя строчка функции возвращает в качестве результата вычисленное значение. Оператор return завершает выполнение функции и возвращает выражение, записанное после ключевого слова return, в качестве выходного значения. В следующем фрагменте программы переменной s присваивается значение 10:

int k = 2;

int l = 3;

int m = 5;

int s = sum(k, l, m);

Имена функций

 

В языке Си++ допустимо  иметь несколько функций с  одним и тем же именем, потому что функции различаются не только по именам, но и по типам аргументов. Если в дополнение к определенной выше функции sum мы определим еще одну функцию с тем же именем

double sum(double a, double b, double c) {

 double result;

 result = a + b + c;

 return result;

}

 

это будет считаться новой  функцией. Иногда говорят, что у этих функций разные подписи. В следующем  фрагменте программы в первый раз будет вызвана первая функция, а во второй раз - вторая:

int x, y, z, ires;

double p,q,s, dres;

... // вызвать первое определение  функции sum

ires = sum(x,y,z); // вызвать второе определение функции sum

dres = sum(p,q,s);

 

При первом вызове функции  sum все фактические аргументы имеют тип int. Поэтому вызывается первая функция. Во втором вызове все аргументы имеют тип double, соответственно, вызывается вторая функция. Важен не только тип аргументов, но и их количество. Можно определить функцию sum, суммирующую четыре аргумента:

int sum(int x1, int x2, int x3, int x4)

 { return x1 + x2 + x3 + x4;}

 

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

int foo(int x);

double foo(int x); // ошибка - двукратное определение имени

 

         Необязательные аргументы функций

При объявлении функций в  языке Си++ имеется возможность  задать значения аргументов по умолчанию. Первый случай применения этой возможности  языка - сокращение записи. Если функция  вызывается с одним и тем же значением аргумента в 99% случаев, и это значение достаточно очевидно, можно задать его по умолчанию. Предположим, функция expnt возводит число в произвольную целую положительную степень. Чаще всего она используется для возведения в квадрат. Ее объявление можно записать так:

 

double expnt (double x, unsigned int e = 2);

Определение функции:

double expnt (double x, unsigned int e)

{ double result = 1;

 for (int i = 0; i < e; i++) result *= x;

 return result;}

 int main(){

 double y = expnt(3.14);

 double x = expnt(2.9, 5);

 return 1;

 

 

Использовать аргументы  по умолчанию удобно при изменении  функции. Если при изменении программы  нужно добавить новый аргумент, то для того, чтобы не изменять все  вызовы этой функции, можно новый  аргумент объявить со значением по умолчанию. В таком случае старые вызовы будут использовать значение по умолчанию, а новые - значения, указанные  при вызове. Необязательных аргументов может быть несколько. Если указан один необязательный аргумент, то либо он должен быть последним в прототипе, либо все аргументы после него должны также иметь значение по умолчанию. Если для функции задан необязательный аргумент, то фактически задано несколько  подписей этой функции. Например, попытка  определения двух функций приведет к ошибке компиляции - неоднозначности  определения функции:

 

double expnt (double x, unsigned int e = 2);

double expnt (double x);

Это происходит потому, что  вызов double x = expnt(4.1) подходит как для первой, так и для второй функции.

 

                  Рекурсия

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

 

int fact(int n)

{int result = 1;

 for (int i = 1; i <= n; i++) result = result * i;

 return result;}

 Второй способ:

 

int fact(int n)

{if (n == 1) return 1; // факториал 1 равен 1

 else return n * fact(n -1); // факториал числа n равен факториалу n-1 умноженному на n}

      Функция fact вызывает сама себя с модифицированными аргументами. Такой способ вычислений называется рекурсией. Рекурсия - это очень мощный метод вычислений. Значительная часть математических функций определяется в рекурсивных терминах. В программировании алгоритмы обработки сложных структур данных также часто бывают рекурсивными.

 

 

 

 

 

 

                                  

 

 

                                         

 

                                     Кесте

 

      Кесте (таблица; table) — мәліметтерді жолдар мен бағаналар қиылысында орналастыру арқылы ұсыну төсілі. Әдетте, кестенің бірінші жолы бағаналардың тақырыптарымен толтырылады. Бағаналардағы мәлімет типтері әр түрлі болуы мүмкін, бірақ бір бағанада орналасатын мәліметтер бір типті болуы қажет. Кесте мәлімдемелік мәліметтер базасының негізі болып саналады. Кесте жолдары жазба, ал бағаналары өріс деп аталады.

                                  

                                              Түрлері

 

      Ақиқаттылық кесте (таблица истинности (логических операций); truth table) — берілген айнымалылар мәндерінің барлық мүмкін комбинацияларынан тұратын және әр комбинацияның ақиқат мәні көрсетілген логикалық функцияларды сипаттайтын кесте.

 

     Ассемблер кестесі (таблица ассемблера; assembler table) — ассемблердің негізгі программаны трансляциялау барысында қолданатын құралы. Мұндай кестелер екі түрлі болады: алдын ала құрылған тұрақты кестелер (мысалы, амалдар кестесі); аудару процесінде құрылатын уақытша кестелер (мысалы, атаулар, бедербелгілер, қателік кестелері).

 

     Атаулар кестесі (таблица имен (символов, идентификаторов); symbol (name) table) — программада қолданылған идентификаторлар және олардың атрибуттарының аударғышпен шығарылатын тізімі.

Базалық регистрлер кестесі (таблица базовых регистров; base register table) — программада using командаларымен жарияланған базалық регистрлер мен адрестер нөмірлерінен тұратын ассемблер кестесі.

 

      Байланыс векторлар кестесі (таблица векторов связи; concatenation vector table(cvt) — операциялық жүйенің ядросында орналасқан, орындалуга даяр қалып-күйдегі жүйелік және проблемалық мөселелер кезегі адресінен тұратын басқару кестесі.

  

      Баптау кестесі (таблица настройки; relocation table) — баптау барысында өзгертілетін адрестер тізімінен, сонымен қатар сол өзгеріске қажетті мәліметтерден тұратын жүктеу немесе объектілік модульдің бөлігі.

      

      Бедербелгілер кестесі (таблица литералов; literal table) — программада кездесетін барлық бедербелгіден тұратын компилятор кестесі.

 

    Беттік ассоциативтік кесте (ассоциативная таблица страниц; lookaside registers) — нақты және виртуаль парақтардың сөйкестіктерін көрсететін және берілген виртуаль адреске байланысты нақты парақтың нөмірін анықтайтын виртуаль жадты басқару жүйесінің бөлігі.

 

     Блоктар кестесі (таблица блоков; block table) — жадты статистикалық үлестіру барысында компилятормен құрылатын кесте. Бұл кесте әрқайсысы блок деңгейі мен осы блокта мәліметтерді орналастыруға арналган жад ұяшықтарының санын көрсететін жазбалардан тұрады.

 

Бұрын болған кесте (таблица предшествования; precedence table) — негізгі программа сөйлемінің жеке элементтерін өндеудің логикалық кезегін анықтайтын компилятордың көмекші кестесі.

Ерсілі-қарсылы сілтемелер кестесі (таблица перекрестных ссылок cross; reference table) — әр идентификатордың типін, адресін, анықталу орнын және қолданылатын орындар тізімін көрсететін аударғышпен құрылған кесте.

Информация о работе Функция