Второедыхание: другие произведения.

Under_Recordz

Music.lib.ru: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Помощь]
  • Оставить комментарий
  • © Copyright Мс.Парозит (paroz_it@mail.ru)
  • Обновлено: 23/01/2007. 0k. Статистика.
  • Рэп
  • Автор музыки: Мс.Парозит
  • Исполняет: Второедыхание

  • 	  
             

    * * *

    Аптека для души

     
    Ваша оценка:
  • Автор текста: Мс.Парозит
  • Автор музыки: Мс.Парозит
  • Исполняет: Второедыхание
  • Прослушать:[mp3,2692k]
  • Жанр: Рэп
  • Аннотация:
    !!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • !!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!!!!!

    * * *

    Боль и Печаль

  • Автор текста: Мс.Парозит
  • Автор музыки: Мс.Парозит
  • Исполняет: Второедыхание
  • Жанр: Рэп
  •   Процедуры и функции
      
      В языке Паскаль, как и в большинстве языков программирования, предусмотрены средства, позволяющие оформлять вспомогательный алгоритм как подпрограмму. Это бывает необходимо тогда, когда какой-либо подалгоритм неоднократно повторяется в программе или имеется возможность использовать некоторые фрагменты уже разработанных ранее алгоритмов. Кроме того, подпрограммы применяются для разбиения крупных программ на отдельные смысловые части в соответствии с модульным принципом в программировании.
      
      Для использования подалгоритма в качестве подпрограммы ему необходимо присвоить имя и описать алгоритм по правилам языка Паскаль. В дальнейшем, при необходимости вызвать его в программе, делают вызов подпрограммы упоминанием в нужном месте имени соответствующего подалгоритма со списком входных и выходных данных. Такое упоминание приводит к выполнению входящих в подпрограмму операторов, работающих с указанными данными. После выполнения подпрограммы работа продолжается с той команды, которая непосредственно следует за вызовом подпрограммы.
      
      В языке Паскаль имеется два вида подпрограмм - процедуры и функции.
      
      Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными - передающиеся из подрограммы в вызывающий блок (результаты работы подпрограммы).
      
      Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими.
      
      
      
      Описание и вызов процедур и функций
      Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, перменных. Исполняемая часть содержит собственно операторы процедур.
      
      Формат описания процедуры имеет вид:
      
      procedure имя процедуры (формальные параметры);
       раздел описаний процедуры
      begin
      
       исполняемая часть процедуры
      
      end;
      
      Формат описания функции:
      
      function имя функции (формальные параметры):тип результата;
       раздел описаний функции
      begin
      
       исполняемая часть функции
      
      end;
      
      Формальные параметры в заголовке процедур и функций записываются в виде:
      
      var имя праметра: имя типа
      и отделяются друг от друга точкой с запятой. Ключевое слово var может отсутствовать (об этом далее). Если параметры однотипны, то их имена можно перечислять через запятую, указывая общее для них имя типа. При описании параметров можно использовать только стандартные имена типов, либо имена типов, определенные с помощью команды type.Список формальных параметров может отсутствовать.
      
      Вызов процедуры производится оператором, имеющим следующий формат:
      
      имя процедуры(список фактических параметров);
      Список фактических параметров - это их перечисление через запятую. При вызове фактические параметры как бы подставляются вместо формальных, стоящих на тех же местах в заголовке. Таким образом происходит передача входных параметров, затем выполняются операторы исполняемой части процедуры, после чего происходит возврат в вызывающий блок. Передача выходных параметров происходит непосредственно во время работы исполняемой части.
      
      Вызов функции в Турбо Паскаль может производиться аналогичным способом, кроме того имеется возможность осуществить вызов внутри какого-либо выражения. В частности имя функции может стоять в правой части оператора присваивания, в разделе условий оператора if и т.д.
      
      Для передачи в вызывающий блок выходного значения функции в исполняемой части функции перед возвратом в вызывающий блок необходимо поместить следующую команду:
      
      имя функции := результат;
      При вызове процедур и функций необходимо соблюдать следущие правила:
      
      количество фактических параметров должно совпадать с количеством формальных;
      соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.
      Заметим, что имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как соответствующие им переменные все равно будут различны из-за того, что хранятся в разных областях памяти. Кроме того, все формальные параметры являются временными переменными - они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.
      
      Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.
      
      var x,y,m,n: integer;
      
      procedure MaxNumber(a,b: integer; var max: integer);
      begin
       if a>b then max:=a else max:=b;
      end;
      
      begin
       write('Введите x,y ');
       readln(x,y);
       MaxNumber(x,y,m);
       MaxNumber(2,x+y,n);
       writeln('m=',m,'n=',n);
      end.
      
      Аналогичную задачу, но уже с использованием функций, можно решить так:
      
      var x,y,m,n: integer;
      
      function MaxNumber(a,b: integer): integer;
       var max: integer;
      begin
       if a>b then max:=a else max:=b;
       MaxNumber := max;
      end;
      
      begin
       write('Введите x,y ');
       readln(x,y);
       m := MaxNumber(x,y);
       n := MaxNumber(2,x+y);
       writeln('m=',m,'n=',n);
      end.
      
      
      Передача параметров
      
      
      В стандарте языка Паскаль передача параметров может производиться двумя способами - по значению и по ссылке. Параметры, передаваемые по значению, называют параметрами-значениями, передаваемые по ссылке - параметрами-переменными. Последние отличаются тем, что в заголовке процедуры (функции) перед ними ставится служебное слово var.
      
      При первом способе (передача по значению) значения фактических параметров копируются в соответствующие формальные параметры. При изменении этих значений в ходе выполнения процедуры (функции) исходные данные (фактические параметры) измениться не могут. Поэтому таким способом передают данные только из вызывающего блока в подпрограмму (т.е. входные параметры). При этом в качестве фактических параметров можно использовать и константы, и переменные, и выражения.
      
      При втором способе (передача по ссылке) все изменения, происходящие в теле процедуры (функции) с формальными параметрами, приводят к немедленным аналогичным изменениям соответствующих им фактических параметров. Изменения происходят с переменными вызывающего блока, поэтому по ссылке передаются выходные параметры. При вызове соответствующие им фактические параметры могут быть только переменными.
      
      Выбор способа передачи параметров при создании процедуры (функции) происходит в соответствии со сказанным выше: входные параметры нужно передавать по значению, а выходные - по ссылке. Практически это сводится к расстановке в заголовке процедуры (функции) описателя var при всех параметрах, которые обозначают результат работы подпрограммы. Однако, в связи с тем, что функция возвращает только один результат, в ее заголовке использовать параметры-переменные не рекомендуется.
      
      
      
      Локальные и глобальные идентификаторы
      Использование процедур и функций в Паскале тесно связано с некоторыми особенностями работы с идентификаторами (именами) в программе. В часности, не все имена всегда доступны для использования. Доступ к идентификатору в конкретный момент времени определяется тем, в каком блоке он описан.
      
      Имена, описанные в заголовке или разделе описаний процедуры или функции называют локальными для этого блока. Имена, описанные в блоке, соответствующем всей программе, называют глобальными. Следует помнить, что формальные параметры прцедур и функций всегда являются локальными переменными для соответствующих блоков.
      
      Основные правила работы с глобальными и локальными именами можно сформулировать так:
      
      Локальные имена доступны (считаются известными, "видимыми") только внутри того блока, где они описаны. Сам этот блок, и все другие, вложенные в него, называют областью видимости для этих локальных имен.
      Имена, описанные в одном блоке, могут совпадать с именами из других, как содержащих данный блок, так и вложенных в него. Это объясняется тем, что переменные, описанные в разных блоках (даже если они имеют одинаковые имена), хранятся в разных областях оперативной памяти.
      Глобальные имена хранятся в области памяти, называемой сегментом данных (статическим сегментом) программы. Они создаются на этапе компиляции и действительны на все время работы программы.
      
      В отличие от них, локальные переменные хранятся в специальной области памяти, которая называется стек. Они являются временными, так как создаются в момент входа в подпрограмму и уничтожаются при выходе из нее.
      
      Имя, описанное в блоке, "закрывает" совпадающие с ним имена из блоков, содержащие данный. Это означает, что если в двух блоках, один из которых содержится внутри другого, есть переменные с одинаковыми именами, то после входа во вложенный блок работа будет идти с локальной для данного блока переменной. Пременная с тем же имнем, описанная в объемлющем блоке, становится временно недоступной и это продолжается до момента выхода из вложенного блока.
      
      Рекомендуется все имена, которые имеют в подпрограммах чисто внутреннее, вспомогательное назначение, делать локальными. Это предохраняет от изменений глобальные объекты с такими же именами.
      

    * * *

    Крики улиц

     
    Ваша оценка:
  • Автор текста: Авторские
  • Автор музыки: Мс.Парозит
  • Исполняет: Второедыхание
  • Прослушать:[mp3,4087k]
  • Жанр: Рэп
  • Аннотация:
    Полный Андерграунд!
  • Встал наоги тяну мысли Каробаса
    Белым по чёрному ощющаю лишь заразу
    Кровавые тени охота за дураками
    Смывая грехи живут облаками
    Незнание могущества держат их в страхе
    Последние вздохи полуживые взмахи
    Так говорят сидящие за дверью
    Не видищие потёртую подошву своей обуви
    А в это время их ебашат словно дрелью
    Кровавые облики туманят ваши головы
    
    Припев: 
    Тень... пропадает постепенно
    Душа... охваченая пленом
    Крик... что нас до боли поглощает
    Но закон улиц никаждый познает
    
    Уличный хозяин, мистер ганджубас
    Его сети поглащают каждого из нас
    Я слышу крики, и в то же время
    Улица зародила в нас своё семя
    Страх, перед тобою один страх
    А ганджубас рулит в твоих мазгах
    Ищешь пятый угол в четырёх стенах
    Обходишь стороной людей в погонах
    Кто нас толкает на подвиги новые
    Это крики уличных законов, суровые
    
    Припев: 
    Тень... пропадает постепенно
    Душа... охваченая пленом
    Крик... что нас до боли поглощает
    Но закон улиц никаждый познает
    
    Крики улиц доносятся из долека
    Каждый пытается создать себе условия
    Борцы за свободу Yo лезут вон из кожи
    Мой взгляд состороны с воим мнением не схожи
    Я вижу лица полу унылые тени
    Взять судьбу в руки или плыть по течению
    Бороться за идею или продаться измене
    Но такие суки не достойны уважения
    Твоё решение, перед тобой две двери
    Поймёшь что потеряешь, а что сможешь найти
    
    Плетёт паук на душе паутину 
    В мутном омуте попадая в тину
    Скользкие взгляды как щупальцы "гаргоны"
    В соседней комнате дикие стоны
    Стеклянные глаза свидетель семейной драмы
    Заплаканные глаза старушки мамы
    Он с улицы она играет его судьбой
    Но боль пройдёт и смоется как будто водой...
    
    Припев: 
    Тень... пропадает постепенно
    Душа... охваченая пленом
    Крик... что нас до боли поглощает
    Но закон улиц никаждый познает
    
    Как ты можешь говорить о том что тварится в мире
    Скажи мне сидя в квартире 
    В заперти в жизне роли-мишени как в тире
    Ничего вокруг не видя открой глаза пошире
    Посмотри что происходит на улицах городов
    Милькают сюжеты, картины кошмарных снов 
    Борцы за свободу прав за свободу слов
    В живых останется только тот кто готов
    Тот кто готов услышать крики улиц
    Увидеть правду в тысячях размытых лиц
    
    Припев: 
    Тень... пропадает постепенно
    Душа... охваченая пленом
    Крик... что нас до боли поглощает
    Но закон улиц никаждый познает
    
    Тень... пропадает постепенно
    Душа... охваченая пленом
    Крик... что нас до боли поглощает
    Но закон улиц никаждый познает

    * * *

    Крылья feat. Vita

     
    Ваша оценка:
  • Автор текста: Мс.Парозит
  • Автор музыки: Мс.Парозит
  • Исполняет: Второедыхание
  • Прослушать:[mp3,6656k]
  • Жанр: Рэп
  •   Процедуры и функции
      
      В языке Паскаль, как и в большинстве языков программирования, предусмотрены средства, позволяющие оформлять вспомогательный алгоритм как подпрограмму. Это бывает необходимо тогда, когда какой-либо подалгоритм неоднократно повторяется в программе или имеется возможность использовать некоторые фрагменты уже разработанных ранее алгоритмов. Кроме того, подпрограммы применяются для разбиения крупных программ на отдельные смысловые части в соответствии с модульным принципом в программировании.
      
      Для использования подалгоритма в качестве подпрограммы ему необходимо присвоить имя и описать алгоритм по правилам языка Паскаль. В дальнейшем, при необходимости вызвать его в программе, делают вызов подпрограммы упоминанием в нужном месте имени соответствующего подалгоритма со списком входных и выходных данных. Такое упоминание приводит к выполнению входящих в подпрограмму операторов, работающих с указанными данными. После выполнения подпрограммы работа продолжается с той команды, которая непосредственно следует за вызовом подпрограммы.
      
      В языке Паскаль имеется два вида подпрограмм - процедуры и функции.
      
      Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными - передающиеся из подрограммы в вызывающий блок (результаты работы подпрограммы).
      
      Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими.
      
      
      
      Описание и вызов процедур и функций
      Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, перменных. Исполняемая часть содержит собственно операторы процедур.
      
      Формат описания процедуры имеет вид:
      
      procedure имя процедуры (формальные параметры);
       раздел описаний процедуры
      begin
      
       исполняемая часть процедуры
      
      end;
      
      Формат описания функции:
      
      function имя функции (формальные параметры):тип результата;
       раздел описаний функции
      begin
      
       исполняемая часть функции
      
      end;
      
      Формальные параметры в заголовке процедур и функций записываются в виде:
      
      var имя праметра: имя типа
      и отделяются друг от друга точкой с запятой. Ключевое слово var может отсутствовать (об этом далее). Если параметры однотипны, то их имена можно перечислять через запятую, указывая общее для них имя типа. При описании параметров можно использовать только стандартные имена типов, либо имена типов, определенные с помощью команды type.Список формальных параметров может отсутствовать.
      
      Вызов процедуры производится оператором, имеющим следующий формат:
      
      имя процедуры(список фактических параметров);
      Список фактических параметров - это их перечисление через запятую. При вызове фактические параметры как бы подставляются вместо формальных, стоящих на тех же местах в заголовке. Таким образом происходит передача входных параметров, затем выполняются операторы исполняемой части процедуры, после чего происходит возврат в вызывающий блок. Передача выходных параметров происходит непосредственно во время работы исполняемой части.
      
      Вызов функции в Турбо Паскаль может производиться аналогичным способом, кроме того имеется возможность осуществить вызов внутри какого-либо выражения. В частности имя функции может стоять в правой части оператора присваивания, в разделе условий оператора if и т.д.
      
      Для передачи в вызывающий блок выходного значения функции в исполняемой части функции перед возвратом в вызывающий блок необходимо поместить следующую команду:
      
      имя функции := результат;
      При вызове процедур и функций необходимо соблюдать следущие правила:
      
      количество фактических параметров должно совпадать с количеством формальных;
      соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.
      Заметим, что имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как соответствующие им переменные все равно будут различны из-за того, что хранятся в разных областях памяти. Кроме того, все формальные параметры являются временными переменными - они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.
      
      Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.
      
      var x,y,m,n: integer;
      
      procedure MaxNumber(a,b: integer; var max: integer);
      begin
       if a>b then max:=a else max:=b;
      end;
      
      begin
       write('Введите x,y ');
       readln(x,y);
       MaxNumber(x,y,m);
       MaxNumber(2,x+y,n);
       writeln('m=',m,'n=',n);
      end.
      
      Аналогичную задачу, но уже с использованием функций, можно решить так:
      
      var x,y,m,n: integer;
      
      function MaxNumber(a,b: integer): integer;
       var max: integer;
      begin
       if a>b then max:=a else max:=b;
       MaxNumber := max;
      end;
      
      begin
       write('Введите x,y ');
       readln(x,y);
       m := MaxNumber(x,y);
       n := MaxNumber(2,x+y);
       writeln('m=',m,'n=',n);
      end.
      
      
      Передача параметров
      
      
      В стандарте языка Паскаль передача параметров может производиться двумя способами - по значению и по ссылке. Параметры, передаваемые по значению, называют параметрами-значениями, передаваемые по ссылке - параметрами-переменными. Последние отличаются тем, что в заголовке процедуры (функции) перед ними ставится служебное слово var.
      
      При первом способе (передача по значению) значения фактических параметров копируются в соответствующие формальные параметры. При изменении этих значений в ходе выполнения процедуры (функции) исходные данные (фактические параметры) измениться не могут. Поэтому таким способом передают данные только из вызывающего блока в подпрограмму (т.е. входные параметры). При этом в качестве фактических параметров можно использовать и константы, и переменные, и выражения.
      
      При втором способе (передача по ссылке) все изменения, происходящие в теле процедуры (функции) с формальными параметрами, приводят к немедленным аналогичным изменениям соответствующих им фактических параметров. Изменения происходят с переменными вызывающего блока, поэтому по ссылке передаются выходные параметры. При вызове соответствующие им фактические параметры могут быть только переменными.
      
      Выбор способа передачи параметров при создании процедуры (функции) происходит в соответствии со сказанным выше: входные параметры нужно передавать по значению, а выходные - по ссылке. Практически это сводится к расстановке в заголовке процедуры (функции) описателя var при всех параметрах, которые обозначают результат работы подпрограммы. Однако, в связи с тем, что функция возвращает только один результат, в ее заголовке использовать параметры-переменные не рекомендуется.
      
      
      
      Локальные и глобальные идентификаторы
      Использование процедур и функций в Паскале тесно связано с некоторыми особенностями работы с идентификаторами (именами) в программе. В часности, не все имена всегда доступны для использования. Доступ к идентификатору в конкретный момент времени определяется тем, в каком блоке он описан.
      
      Имена, описанные в заголовке или разделе описаний процедуры или функции называют локальными для этого блока. Имена, описанные в блоке, соответствующем всей программе, называют глобальными. Следует помнить, что формальные параметры прцедур и функций всегда являются локальными переменными для соответствующих блоков.
      
      Основные правила работы с глобальными и локальными именами можно сформулировать так:
      
      Локальные имена доступны (считаются известными, "видимыми") только внутри того блока, где они описаны. Сам этот блок, и все другие, вложенные в него, называют областью видимости для этих локальных имен.
      Имена, описанные в одном блоке, могут совпадать с именами из других, как содержащих данный блок, так и вложенных в него. Это объясняется тем, что переменные, описанные в разных блоках (даже если они имеют одинаковые имена), хранятся в разных областях оперативной памяти.
      Глобальные имена хранятся в области памяти, называемой сегментом данных (статическим сегментом) программы. Они создаются на этапе компиляции и действительны на все время работы программы.
      
      В отличие от них, локальные переменные хранятся в специальной области памяти, которая называется стек. Они являются временными, так как создаются в момент входа в подпрограмму и уничтожаются при выходе из нее.
      
      Имя, описанное в блоке, "закрывает" совпадающие с ним имена из блоков, содержащие данный. Это означает, что если в двух блоках, один из которых содержится внутри другого, есть переменные с одинаковыми именами, то после входа во вложенный блок работа будет идти с локальной для данного блока переменной. Пременная с тем же имнем, описанная в объемлющем блоке, становится временно недоступной и это продолжается до момента выхода из вложенного блока.
      
      Рекомендуется все имена, которые имеют в подпрограммах чисто внутреннее, вспомогательное назначение, делать локальными. Это предохраняет от изменений глобальные объекты с такими же именами.
      

    * * *

    Осень в Душе

     
    Ваша оценка:
  • Автор текста: Мс.Парозит
  • Автор музыки: Мс.Парозит
  • Исполняет: Второедыхание
  • Прослушать:[mp3,3663k]
  • Жанр: Рэп
  •   Процедуры и функции
      
      В языке Паскаль, как и в большинстве языков программирования, предусмотрены средства, позволяющие оформлять вспомогательный алгоритм как подпрограмму. Это бывает необходимо тогда, когда какой-либо подалгоритм неоднократно повторяется в программе или имеется возможность использовать некоторые фрагменты уже разработанных ранее алгоритмов. Кроме того, подпрограммы применяются для разбиения крупных программ на отдельные смысловые части в соответствии с модульным принципом в программировании.
      
      Для использования подалгоритма в качестве подпрограммы ему необходимо присвоить имя и описать алгоритм по правилам языка Паскаль. В дальнейшем, при необходимости вызвать его в программе, делают вызов подпрограммы упоминанием в нужном месте имени соответствующего подалгоритма со списком входных и выходных данных. Такое упоминание приводит к выполнению входящих в подпрограмму операторов, работающих с указанными данными. После выполнения подпрограммы работа продолжается с той команды, которая непосредственно следует за вызовом подпрограммы.
      
      В языке Паскаль имеется два вида подпрограмм - процедуры и функции.
      
      Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными - передающиеся из подрограммы в вызывающий блок (результаты работы подпрограммы).
      
      Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими.
      
      
      
      Описание и вызов процедур и функций
      Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, перменных. Исполняемая часть содержит собственно операторы процедур.
      
      Формат описания процедуры имеет вид:
      
      procedure имя процедуры (формальные параметры);
       раздел описаний процедуры
      begin
      
       исполняемая часть процедуры
      
      end;
      
      Формат описания функции:
      
      function имя функции (формальные параметры):тип результата;
       раздел описаний функции
      begin
      
       исполняемая часть функции
      
      end;
      
      Формальные параметры в заголовке процедур и функций записываются в виде:
      
      var имя праметра: имя типа
      и отделяются друг от друга точкой с запятой. Ключевое слово var может отсутствовать (об этом далее). Если параметры однотипны, то их имена можно перечислять через запятую, указывая общее для них имя типа. При описании параметров можно использовать только стандартные имена типов, либо имена типов, определенные с помощью команды type.Список формальных параметров может отсутствовать.
      
      Вызов процедуры производится оператором, имеющим следующий формат:
      
      имя процедуры(список фактических параметров);
      Список фактических параметров - это их перечисление через запятую. При вызове фактические параметры как бы подставляются вместо формальных, стоящих на тех же местах в заголовке. Таким образом происходит передача входных параметров, затем выполняются операторы исполняемой части процедуры, после чего происходит возврат в вызывающий блок. Передача выходных параметров происходит непосредственно во время работы исполняемой части.
      
      Вызов функции в Турбо Паскаль может производиться аналогичным способом, кроме того имеется возможность осуществить вызов внутри какого-либо выражения. В частности имя функции может стоять в правой части оператора присваивания, в разделе условий оператора if и т.д.
      
      Для передачи в вызывающий блок выходного значения функции в исполняемой части функции перед возвратом в вызывающий блок необходимо поместить следующую команду:
      
      имя функции := результат;
      При вызове процедур и функций необходимо соблюдать следущие правила:
      
      количество фактических параметров должно совпадать с количеством формальных;
      соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.
      Заметим, что имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как соответствующие им переменные все равно будут различны из-за того, что хранятся в разных областях памяти. Кроме того, все формальные параметры являются временными переменными - они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.
      
      Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.
      
      var x,y,m,n: integer;
      
      procedure MaxNumber(a,b: integer; var max: integer);
      begin
       if a>b then max:=a else max:=b;
      end;
      
      begin
       write('Введите x,y ');
       readln(x,y);
       MaxNumber(x,y,m);
       MaxNumber(2,x+y,n);
       writeln('m=',m,'n=',n);
      end.
      
      Аналогичную задачу, но уже с использованием функций, можно решить так:
      
      var x,y,m,n: integer;
      
      function MaxNumber(a,b: integer): integer;
       var max: integer;
      begin
       if a>b then max:=a else max:=b;
       MaxNumber := max;
      end;
      
      begin
       write('Введите x,y ');
       readln(x,y);
       m := MaxNumber(x,y);
       n := MaxNumber(2,x+y);
       writeln('m=',m,'n=',n);
      end.
      
      
      Передача параметров
      
      
      В стандарте языка Паскаль передача параметров может производиться двумя способами - по значению и по ссылке. Параметры, передаваемые по значению, называют параметрами-значениями, передаваемые по ссылке - параметрами-переменными. Последние отличаются тем, что в заголовке процедуры (функции) перед ними ставится служебное слово var.
      
      При первом способе (передача по значению) значения фактических параметров копируются в соответствующие формальные параметры. При изменении этих значений в ходе выполнения процедуры (функции) исходные данные (фактические параметры) измениться не могут. Поэтому таким способом передают данные только из вызывающего блока в подпрограмму (т.е. входные параметры). При этом в качестве фактических параметров можно использовать и константы, и переменные, и выражения.
      
      При втором способе (передача по ссылке) все изменения, происходящие в теле процедуры (функции) с формальными параметрами, приводят к немедленным аналогичным изменениям соответствующих им фактических параметров. Изменения происходят с переменными вызывающего блока, поэтому по ссылке передаются выходные параметры. При вызове соответствующие им фактические параметры могут быть только переменными.
      
      Выбор способа передачи параметров при создании процедуры (функции) происходит в соответствии со сказанным выше: входные параметры нужно передавать по значению, а выходные - по ссылке. Практически это сводится к расстановке в заголовке процедуры (функции) описателя var при всех параметрах, которые обозначают результат работы подпрограммы. Однако, в связи с тем, что функция возвращает только один результат, в ее заголовке использовать параметры-переменные не рекомендуется.
      
      
      
      Локальные и глобальные идентификаторы
      Использование процедур и функций в Паскале тесно связано с некоторыми особенностями работы с идентификаторами (именами) в программе. В часности, не все имена всегда доступны для использования. Доступ к идентификатору в конкретный момент времени определяется тем, в каком блоке он описан.
      
      Имена, описанные в заголовке или разделе описаний процедуры или функции называют локальными для этого блока. Имена, описанные в блоке, соответствующем всей программе, называют глобальными. Следует помнить, что формальные параметры прцедур и функций всегда являются локальными переменными для соответствующих блоков.
      
      Основные правила работы с глобальными и локальными именами можно сформулировать так:
      
      Локальные имена доступны (считаются известными, "видимыми") только внутри того блока, где они описаны. Сам этот блок, и все другие, вложенные в него, называют областью видимости для этих локальных имен.
      Имена, описанные в одном блоке, могут совпадать с именами из других, как содержащих данный блок, так и вложенных в него. Это объясняется тем, что переменные, описанные в разных блоках (даже если они имеют одинаковые имена), хранятся в разных областях оперативной памяти.
      Глобальные имена хранятся в области памяти, называемой сегментом данных (статическим сегментом) программы. Они создаются на этапе компиляции и действительны на все время работы программы.
      
      В отличие от них, локальные переменные хранятся в специальной области памяти, которая называется стек. Они являются временными, так как создаются в момент входа в подпрограмму и уничтожаются при выходе из нее.
      
      Имя, описанное в блоке, "закрывает" совпадающие с ним имена из блоков, содержащие данный. Это означает, что если в двух блоках, один из которых содержится внутри другого, есть переменные с одинаковыми именами, то после входа во вложенный блок работа будет идти с локальной для данного блока переменной. Пременная с тем же имнем, описанная в объемлющем блоке, становится временно недоступной и это продолжается до момента выхода из вложенного блока.
      
      Рекомендуется все имена, которые имеют в подпрограммах чисто внутреннее, вспомогательное назначение, делать локальными. Это предохраняет от изменений глобальные объекты с такими же именами.
      

    * * *

    Sample'r

     
    Ваша оценка:
  • Автор текста: Авторские
  • Автор музыки: Мс.Парозит
  • Исполняет: Второедыхание
  • Прослушать:[mp3,3632k]
  • Жанр: Рэп
  • Аннотация:
    Это просто самплер! =)
  • Это просто самплер! =)

    * * *

    в наших сердцах feat пижон

     
    Ваша оценка:
  • Автор текста: Мс.Парозит
  • Автор музыки: Мс.Парозит
  • Исполняет: Второедыхание
  • Прослушать:[mp3,5197k]
  • Жанр: Рэп
  • Аннотация:
    !!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • !!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!
    !!!!!!!!!!!!!!!!!!!!!
  • Оставить комментарий
  • © Copyright Мс.Парозит (paroz_it@mail.ru)
  • Обновлено: 23/01/2007. 0k. Статистика.
  • Рэп

  • Связаться с программистом сайта

    Сайт "Художники"
    Доска об'явлений для музыкантов