Romich: другие произведения.

Battle-Tracks

Music.lib.ru: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Помощь]
  • Комментарии: 1, последний от 23/03/2009.
  • © Copyright Romich (...)
  • Обновлено: 08/09/2024. 0k. Статистика.
  • Жанр: Хип-хоп
  • Автор музыки: Romich
  • Автор текста: Romich
  • Исполняет: Romich

  • 
     

    * * *

    a_kak_eto_ne_lubit

     
    Ваша оценка:
  • Прослушать:[mp3,2064k]
  • Размещена: 03/08/2007
  • Жанр: Хип-хоп
  • Пароход отчалил от пристани печале,
    как жаль и щемило что-то внутри души,
    силуэт, перешагивал через песчаные замки,
    и уселся в дали от суеты на камне,
    
    глаза прищуривались, ветер дул с океана,
    Меланхолия, и как её звали? мария?
    Ладонь поддерживила голову, ладонь локоть,
    А как это не любить? ведь сердцу плохо,
    
    Пустота гложит, душевная боль,
    "Да ты о чём сейчас ведь это полная свобода!"
    А ты кто такой?! Я твой внутренний голос,
    люби себя плюс ко всему, родителей, семья,
    
    Она ждала принца на коне, а он принцессу,
    Она желала серенад, а он хотел лишь секса,
    И в следствие чего лопаты копали землю,
    Покойся с миром любовь, и на могилу цветов,
    
    Глаза открылись, образы расплылись в миг,
    лишь солнце по волнам пускало игривый блик,
    снова расстройства, доза анти-депрессантов,
    снова вопросы в голову - где она та самая?
    
    А помнишь конец второй недели февраля,
    Валентинки, цветы, сердечки, признания,
    
    

    * * *

    hhnet1_round1_romich

     
    Ваша оценка:
  • Прослушать:[mp3,1762k]
  • Размещена: 24/06/2007
  • Жанр: Хип-хоп
  • Хип-хоп есть на хип-хопа точка нэт,
    Я убедился в этом отправляя, баттл-трэк,
    Хип-хоп есть на хип-хопа точка нэт,
    А кто не верит заходи на сайт, в интернет,
    
    Хип-хоп есть на хип-хопа точка нэт,
    Я убедился в этом, отправляя баттл-трэк,
    Хип-хоп есть на хип-хопа точка нэт,
    А кто не верит хавай на обед горелый амлет.
    
    
    Я оторву язык тому кто ляпнет что хип-хопа нет
    Это святое для меня, ну а Тупак икона,
    Испокон веков биты вбивали в головы подростков,
    Тех кто ценит искусство в двора отголосках,
    
    Мой голос вам несет эмоции записаны по средству
    микрофона содрогался в ужаса конвульсиях,
    покуда бьётся пульс и лик моего культа баунса заколотого
    копьями на льду как Куликова битва, 
    
    Хип-хоп живёт лишь в андеграунде, где-то под грунтом,
    остальное лишь попса, про клубы писанина,
    как кулаками биты, те кто из завода ваты,
    покайтесь перед батькой ваши строки станут складны, 
    
    Ну ладно добры молодцы, вот мне пора заканчивать,
    В куплетик вложил образы и в читку тонну кача,
    Покачивая головами парами во втором раунде 
    ждите меня ведь я иду по тропам правильным...
    
    
    
     

    * * *

    moi_drug_moi_vrag

     
    Ваша оценка:
  • Прослушать:[mp3,942k]
  • Размещена: 17/02/2007
  • Жанр: Хип-хоп
  •   Массивы
      Массивы - это совокупности однотипных элементов. Характеризуются они следующим:
      
      каждый компонент массива может быть явно обозначен и к нему имеется прямой доступ;
      число компонент массива определяется при его описании и в дальнейшем не меняется.
      Для обозначения компонент массива используется имя переменной-массива и так называемые индексы, которые обычно указывают желаемый элемент. Тип индекса может быть только порядковым (кроме longint). Чаще всего используется интервальный тип (диапазон).
      
      Описание типа массива задается следующим образом:
      
      type
       имя типа = array[ список индексов ] of тип
      
      Здесь имя типа - правильный идентификатор; список индексов - список одного или нескольких индексных типов, разделенных запятыми; тип - любой тип данных.
      
      Вводить и выводить массивы можно только поэлементно.
      
      Пример 1. Ввод и вывод одномерного массива.
      
      const
       n = 5;
      type
       mas = array[1..n] of integer;
      var
       a: mas;
       i: byte;
      begin
       writeln('введите элементы массива');
       for i:=1 to n do readln(a[i]);
       writeln('вывод элементов массива:');
       for i:=1 to n do write(a[i]:5);
      end.
      
      Определить переменную как массив можно и непосредственно при ее описании, без предварительного описания типа массива, например:
      
      var a,b,c: array[1..10] of integer;
      Если массивы a и b описаны как:
      
      var
       a = array[1..5] of integer;
       b = array[1..5] of integer;
      
      то переменные a и b считаются разных типов. Для обеспечения совместимости применяйте описание переменных через предварительное описание типа.
      
      Если типы массивов идентичны, то в программе один массив может быть присвоен другому. В этом случае значения всех переменных одного массива будет присвоены соответствующим элементам второго массива.
      
      Вместе с тем, над массивами не определены операции отношения. Сравнивать два массива можно только поэлементно.
      
      Так как тип, идущий за ключевым словом of в описании массива, - любой тип Турбо Паскаль, то он может быть и другим массивом. Например:
      
      type
       mas = array[1..5] of array[1..10] of integer;
      
      Такую запись можно заменить более компактной:
      
      type
       mas = array[1..5, 1..10] of integer;
      
      Таким образом возникает понятие многомерного массива. Глубина вложенности массивов произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничена, однако не может быть более 65520 байт.
      
      Работа с многомерными массивами почти всегда связана с организацией вложенных циклов. Так, чтобы заполнить двумерный массив (матрицу) случайными числами, используют конструкцию вида:
      
      for i:=1 to m do
      for j:=1 to n do a[i,j]:=random(10);
      
      Для "красивого" вывода матрицы на экран используйте такой цикл:
      
      for i:=1 to m do begin
       for j:=1 to n do write(a[i,j]:5);
       writeln;
      end;
      

    * * *

    r2_romich

     
    Ваша оценка:
  • Прослушать:[mp3,2882k]
  • Размещена: 17/06/2007
  • Жанр: Хип-хоп
  • Феномен, в клинике, расстройство психики,
    Убеждает доктора в том что он сам не свой,
    Воет ночью на луну, а по утрам в лужах
    видит отражение знакомой мимики,
    Его эго подобно двум полосам жизни,
    Противоположности двух цветовых палитр,
    То есть может безсознательно царапать грудь,
    По утрам удивлено дивиться ранам,
    Расщипление личности подобно досок в щепки,
    Я не испытывал этого чтобы знать симптомы,
    Думал дважды вдавливая карандаш в тетрадь,
    Вернёмся к образу который я пытался создать,
    Его имя не важно для общей картины,
    Одно известно точно, дата его именины,
    Тринадцатый до счёту день, где-то в начале марта,
    Отсюда начался отсчёт двоенья личности парня,
    Он во весь голос кричал: украдена копилка,
    а выяснилось сам украл то весь год копил,
    Шизофрения на лицо, на мира восприятье,
    в комнатах дурки парень ощущал себя приятней,
    Причина амнезии - страх и тревоги детства,
    Вполне возможно всё это досталось по наследству,
    Клинический гипноз, сеансы психотерапии,
    Помогут в облегчении симптомов, но не более
    
    
    

    * * *

    r3_romich

     
    Ваша оценка:
  • Прослушать:[mp3,2018k]
  • Размещена: 22/06/2007
  • Жанр: Хип-хоп
  •   Тип раунда (стиль трека) - Look around (Посмотри вокруг). Необходимо раскрыть тему раунда используя окружающую Вас действительность.
      
      
      Третий глаз, у тебя во лбу,
      Дверь в твоё сознание,
      Как у индусов, чакра,
      Это называют 2 РАЗА
      
      Третий глаз, у тебя во лбу,
      Дверь в твоё сознание,
      Как у индусов, чакра,
      Это называет- ся...
      
      ...глаз, у тебя во лбу,
      Дверь в твоё сознание,
      Как у индусов, но безумный
      представит анус...
      
       Кто же без ума? скажите: Дай Ответ!
      Тот опонент которого я бы порвал в паре,
      Стану биться до конца через сотню эмси,
      Знакомым жал руку, остальным плохие вести!
      У меня два глаза, оказалось есть третий,
      И я чувствую что первое место сссветит,
      Мне и пацанам из сетевого андеграунда,
      Четыре раунда читаем без привелегий,
      Кто ценит баунс, посылаю в анус,
      и мой тонус танцы на могиле санта-клауса,
      чёто загнул я... лазию по форуму КЗМЗ,
      запрет на маты в трэках, на диссы к опонентам,
      завет цензуры прям как на балу Людовика третьего,
      и вам даю сха-вать, рэпрезент, да-вай, опонент,
      вста-вай, в очередь спра-во, за продажной славой
      
      
      
       а я клацаю по клаве, а на улице плавятся люди столица
      дымится, жара как на ибица, лыбятся затем влюбятся напьются
      скурятся курицей закусят на крыльце подъезда и смеются...
      
      сеанс гипноза
      
      
       как у индусов, на лбу точка

    * * *

    rapbattle_round1_romich

     
    Ваша оценка:
  • Автор музыки: Romich
  • Автор текста: Romich
  • Исполняет: Romich
  • Прослушать:[mp3,956k]
  • Размещена: 03/02/2007
  • Жанр: Хип-хоп
  •   Процедуры и функции
      
      В языке Паскаль, как и в большинстве языков программирования, предусмотрены средства, позволяющие оформлять вспомогательный алгоритм как подпрограмму. Это бывает необходимо тогда, когда какой-либо подалгоритм неоднократно повторяется в программе или имеется возможность использовать некоторые фрагменты уже разработанных ранее алгоритмов. Кроме того, подпрограммы применяются для разбиения крупных программ на отдельные смысловые части в соответствии с модульным принципом в программировании.
      
      Для использования подалгоритма в качестве подпрограммы ему необходимо присвоить имя и описать алгоритм по правилам языка Паскаль. В дальнейшем, при необходимости вызвать его в программе, делают вызов подпрограммы упоминанием в нужном месте имени соответствующего подалгоритма со списком входных и выходных данных. Такое упоминание приводит к выполнению входящих в подпрограмму операторов, работающих с указанными данными. После выполнения подпрограммы работа продолжается с той команды, которая непосредственно следует за вызовом подпрограммы.
      
      В языке Паскаль имеется два вида подпрограмм - процедуры и функции.
      
      Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными - передающиеся из подрограммы в вызывающий блок (результаты работы подпрограммы).
      
      Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими.
      
      
      
      Описание и вызов процедур и функций
      Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, перменных. Исполняемая часть содержит собственно операторы процедур.
      
      Формат описания процедуры имеет вид:
      
      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 при всех параметрах, которые обозначают результат работы подпрограммы. Однако, в связи с тем, что функция возвращает только один результат, в ее заголовке использовать параметры-переменные не рекомендуется.
      
      
      
      Локальные и глобальные идентификаторы
      Использование процедур и функций в Паскале тесно связано с некоторыми особенностями работы с идентификаторами (именами) в программе. В часности, не все имена всегда доступны для использования. Доступ к идентификатору в конкретный момент времени определяется тем, в каком блоке он описан.
      
      Имена, описанные в заголовке или разделе описаний процедуры или функции называют локальными для этого блока. Имена, описанные в блоке, соответствующем всей программе, называют глобальными. Следует помнить, что формальные параметры прцедур и функций всегда являются локальными переменными для соответствующих блоков.
      
      Основные правила работы с глобальными и локальными именами можно сформулировать так:
      
      Локальные имена доступны (считаются известными, "видимыми") только внутри того блока, где они описаны. Сам этот блок, и все другие, вложенные в него, называют областью видимости для этих локальных имен.
      Имена, описанные в одном блоке, могут совпадать с именами из других, как содержащих данный блок, так и вложенных в него. Это объясняется тем, что переменные, описанные в разных блоках (даже если они имеют одинаковые имена), хранятся в разных областях оперативной памяти.
      Глобальные имена хранятся в области памяти, называемой сегментом данных (статическим сегментом) программы. Они создаются на этапе компиляции и действительны на все время работы программы.
      
      В отличие от них, локальные переменные хранятся в специальной области памяти, которая называется стек. Они являются временными, так как создаются в момент входа в подпрограмму и уничтожаются при выходе из нее.
      
      Имя, описанное в блоке, "закрывает" совпадающие с ним имена из блоков, содержащие данный. Это означает, что если в двух блоках, один из которых содержится внутри другого, есть переменные с одинаковыми именами, то после входа во вложенный блок работа будет идти с локальной для данного блока переменной. Пременная с тем же имнем, описанная в объемлющем блоке, становится временно недоступной и это продолжается до момента выхода из вложенного блока.
      
      Рекомендуется все имена, которые имеют в подпрограммах чисто внутреннее, вспомогательное назначение, делать локальными. Это предохраняет от изменений глобальные объекты с такими же именами.
      

    * * *

    raplife_round1_romich

     
    Ваша оценка:
  • Прослушать:[mp3,852k]
  • Размещена: 14/03/2007
  • Жанр: Хип-хоп
  • ==================
    
    ==================
    

    * * *

    Romich - esli ya v klube(vs Pal)

     
    Ваша оценка:
  • Прослушать:[mp3,2846k]
  • Размещена: 30/07/2007
  • Жанр: Хип-хоп
  •   мы тут посовещались с K.O , мы знаем что вы большие любители баунса и решили дать вам тему "Когда я в клубе чики чиканят горячо".
      трэк не больше 3 мб, качество не меньше 128.
      
      Задание:
      1. Надо 4 строчки игр слов с буквой "Р". (мы знаем что вы любите эту букву выделять в читках)
      2. В трэке надо упомянуть "Какие же все таки судьи хорошие люди, и я это уже давно знаю, а я баунсер!!!!!!"
      
      
      
      я не хожу по клубам, я полтергейст подвалов,
      у меня бледная кожа, и запах перегара,
      
      у меня велосипед модный, балдырганчик,
      
      
      Если я в клубе чика у чикс как чипсы - хрум!
      на самокате я катаю подруг двууух,
      у входа мне охраники целуют сланцы,
      моё лицо с обложек журналов глянцевых,
      В клубе чика у чик как чипсы - хрум!
      на самокате я катаю сразу двууух,
      у входа мне охранники целуют сланцы,
      моё лицо пацана я не пальцем делан
      
      потягивая пока есть бокалы пиво накатим у бара сто грамм
      пока выпирает в кармане стакан мари-хуа, дон хуан, куууба здесь рядом,
      
      
      
      
      дрова я пора на задний двор,
      
      
      в начале типа молитвы "да простят меня сырые подземелия из подписи на рап.кз
      
      Ви-ай-пи-пати, по-парам девушки парни кружат от жара,
      в дыму кумара, в пОру весны отджарим за щеку,
      долби в десны чиксам пока под шамуписиком,
      при свете свеч ночью ты можешь его звать его пупсиком,
      в тёмном углу на столом, санта-клаус с коксом,
      трубочка из бакса скручена, пудренный нос,
      мною особенно запомнилась особа,
      в шубе из соболя, с крокодильей кожи сапожки,
      походка кошки, ма-не-ры отлажены,
      походу там с моё запястье ширина скважины,
      
      эй красотка, выгни спину, ведь моя головка у твоей вагины,
      я как пришёл и также сгину, что не заметишь позже продажу ключей от порше,
      поршень мой точно в этот вечер примет процедуры во рту дуры, с голивудской улыбкой,
      
      потягиваем пиво пока вино в бокалах водку накатим сто грамм,
      выпирает с карман стакан, сторона моих душевных ран захоронена
      в комнатах стон там, плавно план сыплет в кальян мой братан
      у бара мутит ерша бармен неспеша уже, мари-хуа, дон хуан, куба здесь, рядом...
      
      и какие же всё-таки судьи хорошие люди, но я не баунсёр,
      жажда олимпа заставила выдавить тему про клуб, а не хардкор,
      а вообще-то чики чекайте мой чик из починки корвета
      и чеканьте в моих шахтах также чётко золото, детки...
      
      Если я в клубе чика у чикс как чипсы - хрум!
      на самокате я катаю подруг двууух,
      у входа мне охраники целуют сланцы,
      моё лицо с обложек журналов глянцевых,
      В клубе чика у чик как чипсы - хрум!
      на самокате я катаю сразу двууух,
      у входа мне охранники целуют сланцы,
      моё лицо, ой, веки открываются........
      
      я очнулся на асфальте с подбитым глазом,
      оказалось фэйс-контроль не прошол я сразу....
      
      
      
      
      
      пЭл, твоя пЭсенка спЭта, ведь когда я в клубе чики чиканят горячоууу

    * * *

    romich_battle3

     
    Ваша оценка:
  • Прослушать:[mp3,962k]
  • Размещена: 14/02/2007
  • Жанр: Хип-хоп
  •   Процедуры и функции
      
      В языке Паскаль, как и в большинстве языков программирования, предусмотрены средства, позволяющие оформлять вспомогательный алгоритм как подпрограмму. Это бывает необходимо тогда, когда какой-либо подалгоритм неоднократно повторяется в программе или имеется возможность использовать некоторые фрагменты уже разработанных ранее алгоритмов. Кроме того, подпрограммы применяются для разбиения крупных программ на отдельные смысловые части в соответствии с модульным принципом в программировании.
      
      Для использования подалгоритма в качестве подпрограммы ему необходимо присвоить имя и описать алгоритм по правилам языка Паскаль. В дальнейшем, при необходимости вызвать его в программе, делают вызов подпрограммы упоминанием в нужном месте имени соответствующего подалгоритма со списком входных и выходных данных. Такое упоминание приводит к выполнению входящих в подпрограмму операторов, работающих с указанными данными. После выполнения подпрограммы работа продолжается с той команды, которая непосредственно следует за вызовом подпрограммы.
      
      В языке Паскаль имеется два вида подпрограмм - процедуры и функции.
      
      Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными - передающиеся из подрограммы в вызывающий блок (результаты работы подпрограммы).
      
      Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими.
      
      
      
      Описание и вызов процедур и функций
      Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, перменных. Исполняемая часть содержит собственно операторы процедур.
      
      Формат описания процедуры имеет вид:
      
      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 при всех параметрах, которые обозначают результат работы подпрограммы. Однако, в связи с тем, что функция возвращает только один результат, в ее заголовке использовать параметры-переменные не рекомендуется.
      
      
      
      Локальные и глобальные идентификаторы
      Использование процедур и функций в Паскале тесно связано с некоторыми особенностями работы с идентификаторами (именами) в программе. В часности, не все имена всегда доступны для использования. Доступ к идентификатору в конкретный момент времени определяется тем, в каком блоке он описан.
      
      Имена, описанные в заголовке или разделе описаний процедуры или функции называют локальными для этого блока. Имена, описанные в блоке, соответствующем всей программе, называют глобальными. Следует помнить, что формальные параметры прцедур и функций всегда являются локальными переменными для соответствующих блоков.
      
      Основные правила работы с глобальными и локальными именами можно сформулировать так:
      
      Локальные имена доступны (считаются известными, "видимыми") только внутри того блока, где они описаны. Сам этот блок, и все другие, вложенные в него, называют областью видимости для этих локальных имен.
      Имена, описанные в одном блоке, могут совпадать с именами из других, как содержащих данный блок, так и вложенных в него. Это объясняется тем, что переменные, описанные в разных блоках (даже если они имеют одинаковые имена), хранятся в разных областях оперативной памяти.
      Глобальные имена хранятся в области памяти, называемой сегментом данных (статическим сегментом) программы. Они создаются на этапе компиляции и действительны на все время работы программы.
      
      В отличие от них, локальные переменные хранятся в специальной области памяти, которая называется стек. Они являются временными, так как создаются в момент входа в подпрограмму и уничтожаются при выходе из нее.
      
      Имя, описанное в блоке, "закрывает" совпадающие с ним имена из блоков, содержащие данный. Это означает, что если в двух блоках, один из которых содержится внутри другого, есть переменные с одинаковыми именами, то после входа во вложенный блок работа будет идти с локальной для данного блока переменной. Пременная с тем же имнем, описанная в объемлющем блоке, становится временно недоступной и это продолжается до момента выхода из вложенного блока.
      
      Рекомендуется все имена, которые имеют в подпрограммах чисто внутреннее, вспомогательное назначение, делать локальными. Это предохраняет от изменений глобальные объекты с такими же именами.
      

    * * *

    romich_kzmz3_pobeg

     
    Ваша оценка:
  • Прослушать:[mp3,2302k]
  • Размещена: 11/06/2007
  • Жанр: Хип-хоп
  • Солнце било лучами в затылки тех кого,
    вели на холм под конвоем, руки связаны,
    за спиною так что вены от цепей синели,
    Три посмертно будучи распятых на кресте,
    Два разбойника, а третий невиновный философ,
    Если истина рядом, то пал Ершалаим,
    Где-то в далеке на севере сверкали молнии,
    Солдат латы слепили прелемлонием света,
    Проклиная осуждённых за то что,
    Три часа под палящим солнцем плавились,
    Их оголённые участки кожи между доспехами,
    Пехоты ряды пресекали побег,
    после два кола из стали вбили в ладони,
    На вершине каждому кто наплевал на закон,
    Палач с копьём на наконечнике губка,
    Протянута к губам поочерёдно трём,
    Ибо влаги испить на казни дело святое,
    В это время тучи настигали, капли плакали,
    С неба капая падали в лицо Понтий Пилата,
    Его голова гудела, а сердца пронзались,
    остриём через лохмотья старых одеяний,
    Кровь лилась из груди на крестах ряспятых,
    таким образом был совершён побег поневоле,
    Из мира сего скорей всего в рай.
    
    
    Пульс, смолк, вороны клевали,
    глаза и мягкой плоти атомы,
    
    Пульс, смолк, вороны клевали,
    глаза и мягкой плоти материю,
    
    Пульс, смолк, вороны клевали,
    глаза и мягкой плоти части,
    
    Пульс смолк, вороны клевали,
    глаза и мягкую плоть рвали.
    
    
    

    * * *

    romich_r2

     
    Ваша оценка:
  • Прослушать:[mp3,1318k]
  • Размещена: 13/02/2007
  • Жанр: Хип-хоп
  •   Процедуры и функции
      
      В языке Паскаль, как и в большинстве языков программирования, предусмотрены средства, позволяющие оформлять вспомогательный алгоритм как подпрограмму. Это бывает необходимо тогда, когда какой-либо подалгоритм неоднократно повторяется в программе или имеется возможность использовать некоторые фрагменты уже разработанных ранее алгоритмов. Кроме того, подпрограммы применяются для разбиения крупных программ на отдельные смысловые части в соответствии с модульным принципом в программировании.
      
      Для использования подалгоритма в качестве подпрограммы ему необходимо присвоить имя и описать алгоритм по правилам языка Паскаль. В дальнейшем, при необходимости вызвать его в программе, делают вызов подпрограммы упоминанием в нужном месте имени соответствующего подалгоритма со списком входных и выходных данных. Такое упоминание приводит к выполнению входящих в подпрограмму операторов, работающих с указанными данными. После выполнения подпрограммы работа продолжается с той команды, которая непосредственно следует за вызовом подпрограммы.
      
      В языке Паскаль имеется два вида подпрограмм - процедуры и функции.
      
      Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными - передающиеся из подрограммы в вызывающий блок (результаты работы подпрограммы).
      
      Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими.
      
      
      
      Описание и вызов процедур и функций
      Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, перменных. Исполняемая часть содержит собственно операторы процедур.
      
      Формат описания процедуры имеет вид:
      
      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 при всех параметрах, которые обозначают результат работы подпрограммы. Однако, в связи с тем, что функция возвращает только один результат, в ее заголовке использовать параметры-переменные не рекомендуется.
      
      
      
      Локальные и глобальные идентификаторы
      Использование процедур и функций в Паскале тесно связано с некоторыми особенностями работы с идентификаторами (именами) в программе. В часности, не все имена всегда доступны для использования. Доступ к идентификатору в конкретный момент времени определяется тем, в каком блоке он описан.
      
      Имена, описанные в заголовке или разделе описаний процедуры или функции называют локальными для этого блока. Имена, описанные в блоке, соответствующем всей программе, называют глобальными. Следует помнить, что формальные параметры прцедур и функций всегда являются локальными переменными для соответствующих блоков.
      
      Основные правила работы с глобальными и локальными именами можно сформулировать так:
      
      Локальные имена доступны (считаются известными, "видимыми") только внутри того блока, где они описаны. Сам этот блок, и все другие, вложенные в него, называют областью видимости для этих локальных имен.
      Имена, описанные в одном блоке, могут совпадать с именами из других, как содержащих данный блок, так и вложенных в него. Это объясняется тем, что переменные, описанные в разных блоках (даже если они имеют одинаковые имена), хранятся в разных областях оперативной памяти.
      Глобальные имена хранятся в области памяти, называемой сегментом данных (статическим сегментом) программы. Они создаются на этапе компиляции и действительны на все время работы программы.
      
      В отличие от них, локальные переменные хранятся в специальной области памяти, которая называется стек. Они являются временными, так как создаются в момент входа в подпрограмму и уничтожаются при выходе из нее.
      
      Имя, описанное в блоке, "закрывает" совпадающие с ним имена из блоков, содержащие данный. Это означает, что если в двух блоках, один из которых содержится внутри другого, есть переменные с одинаковыми именами, то после входа во вложенный блок работа будет идти с локальной для данного блока переменной. Пременная с тем же имнем, описанная в объемлющем блоке, становится временно недоступной и это продолжается до момента выхода из вложенного блока.
      
      Рекомендуется все имена, которые имеют в подпрограммах чисто внутреннее, вспомогательное назначение, делать локальными. Это предохраняет от изменений глобальные объекты с такими же именами.
      

    * * *

    romich_r3

     
    Ваша оценка:
  • Прослушать:[mp3,1884k]
  • Размещена: 26/02/2007
  • Жанр: Хип-хоп
  •   Процедуры и функции
      
      В языке Паскаль, как и в большинстве языков программирования, предусмотрены средства, позволяющие оформлять вспомогательный алгоритм как подпрограмму. Это бывает необходимо тогда, когда какой-либо подалгоритм неоднократно повторяется в программе или имеется возможность использовать некоторые фрагменты уже разработанных ранее алгоритмов. Кроме того, подпрограммы применяются для разбиения крупных программ на отдельные смысловые части в соответствии с модульным принципом в программировании.
      
      Для использования подалгоритма в качестве подпрограммы ему необходимо присвоить имя и описать алгоритм по правилам языка Паскаль. В дальнейшем, при необходимости вызвать его в программе, делают вызов подпрограммы упоминанием в нужном месте имени соответствующего подалгоритма со списком входных и выходных данных. Такое упоминание приводит к выполнению входящих в подпрограмму операторов, работающих с указанными данными. После выполнения подпрограммы работа продолжается с той команды, которая непосредственно следует за вызовом подпрограммы.
      
      В языке Паскаль имеется два вида подпрограмм - процедуры и функции.
      
      Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными - передающиеся из подрограммы в вызывающий блок (результаты работы подпрограммы).
      
      Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими.
      
      
      
      Описание и вызов процедур и функций
      Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, перменных. Исполняемая часть содержит собственно операторы процедур.
      
      Формат описания процедуры имеет вид:
      
      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 при всех параметрах, которые обозначают результат работы подпрограммы. Однако, в связи с тем, что функция возвращает только один результат, в ее заголовке использовать параметры-переменные не рекомендуется.
      
      
      
      Локальные и глобальные идентификаторы
      Использование процедур и функций в Паскале тесно связано с некоторыми особенностями работы с идентификаторами (именами) в программе. В часности, не все имена всегда доступны для использования. Доступ к идентификатору в конкретный момент времени определяется тем, в каком блоке он описан.
      
      Имена, описанные в заголовке или разделе описаний процедуры или функции называют локальными для этого блока. Имена, описанные в блоке, соответствующем всей программе, называют глобальными. Следует помнить, что формальные параметры прцедур и функций всегда являются локальными переменными для соответствующих блоков.
      
      Основные правила работы с глобальными и локальными именами можно сформулировать так:
      
      Локальные имена доступны (считаются известными, "видимыми") только внутри того блока, где они описаны. Сам этот блок, и все другие, вложенные в него, называют областью видимости для этих локальных имен.
      Имена, описанные в одном блоке, могут совпадать с именами из других, как содержащих данный блок, так и вложенных в него. Это объясняется тем, что переменные, описанные в разных блоках (даже если они имеют одинаковые имена), хранятся в разных областях оперативной памяти.
      Глобальные имена хранятся в области памяти, называемой сегментом данных (статическим сегментом) программы. Они создаются на этапе компиляции и действительны на все время работы программы.
      
      В отличие от них, локальные переменные хранятся в специальной области памяти, которая называется стек. Они являются временными, так как создаются в момент входа в подпрограмму и уничтожаются при выходе из нее.
      
      Имя, описанное в блоке, "закрывает" совпадающие с ним имена из блоков, содержащие данный. Это означает, что если в двух блоках, один из которых содержится внутри другого, есть переменные с одинаковыми именами, то после входа во вложенный блок работа будет идти с локальной для данного блока переменной. Пременная с тем же имнем, описанная в объемлющем блоке, становится временно недоступной и это продолжается до момента выхода из вложенного блока.
      
      Рекомендуется все имена, которые имеют в подпрограммах чисто внутреннее, вспомогательное назначение, делать локальными. Это предохраняет от изменений глобальные объекты с такими же именами.
      

    * * *

    round1_under-rec-battle

     
    Ваша оценка:
  • Прослушать:[mp3,1106k]
  • Размещена: 21/03/2007
  • Жанр: Хип-хоп
  •   Задача 105
      
      ( Вычисление суммы ряда 1+1/2+1/3+ ... }
      var
      n: integer; { кол-во суммируемых членов ряда }
      i:integer; { номер элемента ряда }
      elem:real; { значение элемента ряда }
      summ:real; { сумма элементов ряда }
      begin
      writeln('Вычисление частичной суммы ряда 1+1/2+1/3+...');
      writeln('Введите кол-во суммируемых членов ряда');
      write('->');
      readln(n);
      suinm:=O;
      for i:=1 to n do
      begin
      elem:=l/i;
      summ: =suimH-elem; end;
      write('Сумма первых *,n); writeln(' членов ряда равна ', suram: 6: 4) ; readln;
      end.
      
      Задача 106
      
      { Таблица степеней двойки } vax
      n: integer; { показатель степени } x: integer; { значение 2 в степени п } begin
      writeln('Таблица степеней двойки'); х:=1;
      for n:=0 to 10 do begin
      writeln(n:2,x:6); x:=x*2; end; readln; end.
      
      Задача 108
      
      { Таблица функции } const
      LB=-2; { нижняя граница диапазона изменения аргумента }
      НВ=2; { верхняя граница диапазона изменения аргумента }
      DX=0.5; { приращение аргумента } var
      х,у: real; { аргумент и значение функции }
      n: integer; { кол-во точек }
      i: integer; { счетчик циклов }96 in
      n:=Round((HB - LB)/DX)+1;
      x:=LB;
      writelnC-------------------') ;
      writeln(' x I y');
      writeln('-------------------') ;
      for i:=1 to n do begin
      y:=-2.4*x*x+5*x-3; writeln(x:8:2,' I ',y:8:2); x:=x+DX; end;
      writelnC-------------------') ;
      readln; end.
      
      Задача 111
      
      { Вычисляет среднее арифметическое последовательности
      дробных чисел, вводимой с клавиатуры } const
      L=5; { длина последовательности } var
      a: real; { число }
      n: integer; { кол-во введенных чисел } sum: real; { сумма введенных чисел }
      sred: real; { среднее арифметическое введенных чисел } begin
      writeln('Обработка последовательности дробных чисел'); writeln('После ввода каждого числа нажимайте '); sum:=0;
      for n:=l to L do begin
      write('->'); readln(a); sum:=sum+a; sred:=sum/n;
      writelnf'Введено чисел:',п:3, ' Сумма: ', sum:6:2, ' Сред.арифметическое:',sred:6:2); end;
      writeln('Для завершения работы программы нажмите '); readln; end.
      
      Задача 112
      
      { Вычисляет среднее арифметическое и определяет
      минимальное и максимальное число последовательности
      дробных чисел, вводимых с клавиатуры } var
      a: real; { очередное число }
      n: integer; { количество чисел }
      sum: real; ( сумма введенных чисел }
      sred: real; { среднее арифметическое }
      min: real; ( минимальное число последовательности }
      max: real; { максимальное число последовательности }
      i: integer; { счетчик циклов }
      begin
      writeln('Обработка последовательности дробных чисел.'); write ('Введите количество чисел последовательности ->'); readln(п);
      writeln('Вводите последовательность.'); writeln('После ввода каждого числа нажимайте '); write('->');
      readln(a); { вводим первое число последовательности } { предположим, что:}
      min:=a; { первое число является минимальным } шах:=а; { первое число является максимальным } sum:=a;
      { введем остальные числа } for i:=l to n-1 do begin
      write('->');
      readln(a);
      sum:=sum+a;
      if a < min then min:=a;
      if a > max then max:=a; end; sred:=sum/n;
      teln('Количество чисел:*,п); writeln('Среднее арифметическое:',sred:6:2); writeln('Минимальное число:',min:6:2); writeln('Максимальное число:',шах:б:2);
      writeln('Для завершения работы программы нажмите '); readln; end.
      
      Задача 114
      
      ( Генерирует три последовательности случайных чисел и вычисляет среднее арифметическое каждой последовательности } const
      N=3; { кол-во последовательностей } L=10; { длина последовательности ) var
      г: integer; ( случайное число } sum: integer; { сумма чисел последовательности } sred: real; ( среднее арифметическое } i,j: integer; { счетчики циклов } begin
      writeln('Случайные числа');
      Randomize; { инициализация генератора случ. чисел } for i:=l to N do begin
      { генерируем последовательность } sum:=0; { не забыть обнулить ! } for j:=1 to L do begin
      r:=Random(10)+1; write(r:3); sum:=sum+r; end;
      sred:=sum/L;
      writeln(' Сред.арифм.: ',sred:6:2); end;
      writeln('Для завершения работы программы нажмите '); readln; and.
      
      
      Задача 116
      
      ( Таблица функции у"|х| } const
      LB=-4; { нижняя граница диапазона изменения аргумента } НВ=4; ( верхняя граница диапазона изменения аргумента } DX=0.5; { приращение аргумента } var
      х,у: real; { аргумент и значение функции } n: integer; ( кол-во точек } 1: integer; { счетчик циклов } begin
      writeln('Таблица значений функции у=IхI '); n:=Round((НВ - LB)/DX)+1; x:=LB;
      for i:=l to n do begin
      y:=Abs(x);
      writeln(x:6:2,y:6:2); x:=x+DX; end; readln; end.
      
      Задача 119
      
      { Вьшодит таблицу умножения на 7 } var
      m: integer; { число, для которого надо вывести таблицу умножения (множимое) }
      n: integer; { множитель }
      р: integer; { произведение } begin
      m:=7;
      for n:=l to 10 do
      begin
      p:=ra*n;
      writeln(m,'x',n,' =', p) ;
      end;
      readln; { чтобы результат не исчезал с экрана } end.
      Задача 120
      
      ( Преобразование десятичного числа в двоичное } var
      dec:'integer; { десятичное число }
      v: integer; { вес формируемого разряда }
      i: integer; { номер формируемого разряда } begin
      writeln('Преобразование десятичного числа в двоичное');
      writeln('Введите целое число от 0 до 255 и нажмите ',
      ''); write('->'); readln(dec);
      write('Десятичному числу ',dec,' соответствует двоичное '); v:=128; { вес старшего разряда } for i:=l to 8 do begin
      if dec >= v then begin
      write('1'); dec:=dec-v; end
      else write('0'); v:=Round(v/2); { вес следующего разряда в два раза }
      { меньше веса текущего разряда } end; readln; end.
      
      Задача 121
      
      { Выводит на экран квадрат Пифагора - таблицу умножения. } var
      i,j: integer; { номер строки и столбца таблицы }
      р: integer; { произведение i на j } begin
      write('':4); { левая верхняя клетка таблицы }
      for j:=l to 10 do { первая строка - номера столбцов } write(j:4);
      writeln;
      for i:=l to 10 do
      
      101
      begin
      write(i:4); { номер строки } for j:=l to 10 do { строка таблицы }
      write(i*j:4) ; writeln; end;
      readln; { чтобы результат не исчезал с экрана } end.
      
      Задача 122
      
      { Вычисление суммы ряда 1 -1/3 + 1/5 - 1/7 + ... } var
      х: real; { член ряда }
      n: integer; { количество суммируемых членов } summ: real; { частичная сумма } i: integer; { счетчик циклов } begin
      writeln('Вычисление суммы ряда 1 -1/3 + 1/5 - 1/7 + ...'); write('Введите кол-во суммируемых членов ряда ->'); readln(п); summ:=0;
      for i: = 1 to n do begin
      x:=l/(2*i - 1); if (i mod 2) = 0 then x:=-l*x; summ:=summ+x; end;
      writeln('Сумма ряда: ',summ:8:6);
      writeln('Значение pi/4 ',pi/4:8:6); { pi - именованная
      константа } readln; end.
      
      Задача 123
      
      { Приближенное вычисление интеграла методом прямоугольников } var
      a,b: real; { границы отрезка }
      dx: real; ( приращение аргумента (величина интервалreal; { приближенное значение интеграла} n: integer; { количество интервалов } х: real; { аргумент }
      у: real; { значение функции в начале интервала } 1: integer; begin
      writeln('Приближенное вычисление интеграла');
      write('Нижняя граница отрезка -> ');
      readln(a);
      write('Верхняя граница отрезка -> ');
      readln(b);
      write('Приращение аргумента -> ');
      readln(dx);
      n:=Round((b-a)/dx);
      x: =a ;
      s:=0;
      for i:=l to n do
      begin
      y:=5*x*x-x+2; { значение функции в начале интервала }
      s:=s+y*dx; •
      x:=x+dx; end;
      writeln{'Значение интеграла: *,s:9:3);
      writeln('Для завершения работы программы нажмите '); readln; end.
      
      Задача 124
      
      { Приближенное var
      a,b: real;
      dx: real;
      s: real; n: integer; x: real; yl,y2: real;
      i: integer;
      вычисление интеграла методом трапеций }
      { границы отрезка }
      { приращение аргумента (величина интервала)}
      { приближенное значение интеграла} { количество интервалов } { аргумент }
      { значение функции в начале и в конце интервала }
      begin
      writeln('Приближенное вычисление интеграла1);
      write('Нижняя граница отрезка -> ');
      readln(a);
      write('Верхняя граница отрезка -> ');
      readln(b);
      write('Приращение аргумента -> ');
      readln(dx);
      n:=Round((b-a)/dx);
      x: =a;
      s:=0;
      for i:=l to n do
      begin
      yl:=5*x*x-x+2; { значение ф-и в начале интервала }
      x:=x+dx;
      у2:=5*х*х-х+2; { значение ф-и в конце интервала }
      s:=s+(yl+y2)*dx/2; end;
      writeln('Значение интеграла: ',8:9:3);
      writelnf'Для завершения работы программы нажмите '); readln; end.
      
      Задача 126
      
      { Преобразование десятичного числа в двоичное } var
      dec: integer; { десятичное число }
      v: integer; { вес формируемого разряда }
      i: integer; { номер формируемого разряда } begin
      writeln('Преобразование десятичного числа в двоичное');
      writeln('Введите целое число от 0 до 255 и нажмите ', '');
      write('->');
      readln(dec);
      write('Десятичному числу ',dec,' соответствует двоичное ');
      v:=128; { вес старшего (восьмого) разряда )
      for i:=l to 8 do
      in
      if dec >= v then begin
      write('1');
      dec:=dec-v; end else write('0');
      v:=Round(v/2); { вес следующего разряда в два раза меньше }
      end;
      readln; end.
      
      Задача 127
      
      ( Программа проверяет знание таблицы умножения }
      uses Crt;
      var
      numbl, пштЬ2:integer; { Первое и* второе число }
      res:integer; ( Результат умножения первого числа на второе }
      otv:integer; { Ответ испытуемого }
      kol:integer; { Количество правильных ответов }
      i:integer;
      begin
      ClrScr; { очистить экран }
      writeln(' *** Проверка знания таблицы умножения ***•);
      writeln(' После примера введите ответ и нажмите .');
      writeln;
      kol:=0; ( правильных ответов )
      Randomize; ( инициализация генератора случайных чисел }
      for i:=l to 10 do { 10 примеров }
      begin
      numbl:=Random(9)+ 1;
      numb2:=Random(9)+1;
      res:=numbl * numb2;
      write(' (,numbl,'x',numb2,'=');
      readln(otv);
      if otv=res
      then
      kol:=kol+l else begin
      writeln(' Вы ошиблись! ',numbl,'*',numb2,'=',res);
      end; end;
      writeln(' Правильных ответов:',kol); write(' Ваша оценка: ') ; case kol of
      10: writelnС51); 9,8: writeln('4'); 7,6: writeln('3') ; 0..5:writeln('2') ; end;
      writeln(' Для завершения работы с программой нажмите ') ;
      readln; end.
      
      Задача 128
      
      { Проверка умения складывать и вычитать числа. } uses
      Crt;
      var
      numbl,numb2:integer; { числа }
      op:integer; { Действие над числами 0 - сложение,
      1 - вычитание }
      sop: char; { знак операции - "плюс" или "минус" } res:integer; { Результат } otv:integer; { Ответ испытуемого } kol:integer; { Количество правильных ответов }
      buf:integer; { буфер для обмена numbl и numb2, в случае, если numbl  i: integer; { счетчик циклов }
      begin
      ClrScr;
      writeln('Проверка умения складывать и вычитать числа.');
      writeln('После примера введите ответ и нажмите .');
      106
      l:=0;
      Randomize;
      for i:=l to 10 do
      begin
      { сгенерируем пример }
      numbl:=Random(9)+1; { первое число }
      numb2:=Random(9)+1; { второе число }
      op:=Random(2); ( действие над числами }
      if op=0 then
      begin { сложение} res:=numbl+numb2; sop:='+'; end else
      begin { Вычитание }
      
      if numbl < numb2 then
      begin { обменяем numbl и numb2} buf:=numb2; numb2:=numbl; numbl:=buf; end;
      res: =numbl-numb2 ; end;
      write(' ',numbl,sop,numb2,'='); { вывести пример } readln(otv); { получить ответ
      испытуемого } if otv = res then
      kol:=kol+l else
      begin
      writeln(' Вы ошиблись! ',numbl,sop,numb2,'=',res);
      end; end;
      writeln(' Правильных ответов:',kol); write(' Ваша оценка:'); case kol of
      10: writeln(?5');
      9,8: writeln(l4l);
      7,6: writelrK'31) ; 0..5:writeln('2') ; end; writelnC Для завершения работы с программой нажмите
      '); readln; end.
      
      Задача 129
      
      { Простые электронные часы }
      uses Crt; { используем процедуры и функции библиотеки Crt }
      var
      min,sec: integer; { минуты, секунды } begin
      ClrScr; { очистить экран } for min:=l to 3 do begin
      for sec:=l to 60 do begin
      Delay(lOOO); { задержка 1000 ms }
      GotoXY(l,l); { установить курсор в 1-ю колонку
      1-й строки ) write(min,':',sec,' ');
      if KeyPressed ( если нажата клавиша } then Halt; { завершить программу } end; end; end.
      
      Задача 130
      
      { Вычисление среднего арифметического
      последовательности положительных чисел } var
      а : integer; { число, введенное с клавиатуры } n : integer; { количество чисел } s : integer; { сумма чисел } m : real; { среднее а=0;
      writeln('Вычисление среднего арифметического
      последовательности положительных чисел.');
      writeln('Вводите после стрелки числа. ',
      'Для завершения ввода введите ноль.');
      repeat
      write C> ');
      readln(a);
      s:=s+a;
      n:=n+l; until a <= 0; n:=n-l;
      writeln('Введено чисел:',n); writeln('Сумма чисел: ',s); m := s/n; writeln('Среднее арифметическое: ',m:6:2);
      writeln('Для завершения работы программы нажмите ');
      readln;
      end.
      
      Задача 131
      
      ( Определение максимального числа последовательности положительных чисел }
      var
      а : integer; { очередное число } m : integer; { максимальное число } begin
      write('Определение максимального числа');
      writeln('последовательности положительных чисел.');
      writeln('Вводите после стрелки числа. ',
      'Для завершения ввода введите ноль.'); т:=0; repeat
      write('> ');
      readln(a);
      if a > т then m := а; until a <= 0; writeln('Максимальное число: ',т);
      завершения работы программы нажмите ');
      readln;
      end.
      
      Задача 132
      
      { Проверка, является ли введенное с клавиатуры
      целое число простым } program prost; var
      n: integer; d: integer; r: integer; begin
      write('Введите целое число-> ');
      readln(n);
      d:=2; { сначала будем делить на два }
      repeat
      r:=n mod d;
      if r<>0 ( n не разделилось нацело на d }
      then d:=d + 1;
      until r=0; { пока не нашли число, на которое делится п ) if d=n
      then writelnf n,' - простое число. ') else writeln(n,' - не простое число.');
      
      Задача 134
      
      { Игра "Угадай число" } const
      NPOP=5; { количество попыток, предоставляемое игроку } var
      comp: integer; { число, "задуманное" компьютером }
      igrok: integer; { вариант игрока }
      n: integer; { кол-во попыток, сделанное игроком } begin
      Randomize; { инициализация генератора случайных чисел }
      comp:=Random(9)+1; { компьютер задумал число }
      110
      teln('Игра "Угадай число". ') ;
      writeln('Компьютер "задумал" число от 1 до 10.');
      writeln('Угадайте его за ',NPOP,' попыток.');
      writeln('Введите число и нажмите .');
      repeat
      n:=n+l;
      write('->');
      readln(igrok);
      until (n = NPOP) or (comp = igrok); if comp = igrok
      then writeln('Вы выиграли!')
      else writeln('Вы проиграли! Компьютер задумал число ',
      comp); readln;
      end.
      
      Задача 135
      
      { Таймер )
      uses Crt;
      var .
      mm, sec: integer; { задержка: минут и секунд } begin
      writeln('Введите величину задержки в минутах и секундах,');
      writeln('например 2 30 и нажмите .');
      write('->');
      readln(min,sec);
      ClrScr;
      GotoXY(2,2);
      write(min,':',sec,' ');
      repeat
      if sec = 0 then begin
      min:=min-l;
      sec:=60; end; repeat
      Delay(1000) ;
      sec:=sec-l;
      GotoXY(2,2) ; { задержка 1 сек } write(min,':',sec,' '); if KeyPressed { если нажата клавиша } then Halt; { завершить программу } until sec = 0; until (min = 0) and (sec = 0);
      { звуковой сигнал }
      Sound(1000); { включить звук - сигнал частотой 1000 герц} Delay(500);
      Nosound; { выключить звук} end.
      
      Задача 136
      
      { вычисляемое значение ПИ }
      { точность вычисления }
      { номер члена ряда }
      { значение члена ряда }
      { Вычисление числа "ПИ" var
      p:real;
      t:real;
      n:integer;
      elemrreal; begin
      p:=0;
      n:=l;
      elem:=l; { начальное значение}
      write('Задайте точность вычисления ПИ-> ');
      readln(t);
      writeln('Вычисление ПИ с точностью',t:9:6);
      while elem >= t do
      begin
      elem:=l/(2*n-l) ; if (n MOD 2) = 0
      then p:=p-elem else p:=p+elem; n:=n+l;
      end;
      p:=p*4;
      writeln('Значение ПИ с точностью',t:9:б,' равно1,р:9:6);
      writeln('Просуммировано ',п,' членов ряда.');
      readln; end.
      
      Задача 137
      
      { Вычисление наибольшего общего делителя двух целых чисел }
      var
      nl,n2:integer; { числа, НОД которых надо найти } nod:integer; { наибольший обший делитель } г:integer; { остаток от деления nl на п2 }
      begin
      writeln('Вычисление наибольшего общего делителя1);
      writeln('для двух целых чисел.');
      write('Введите в одной строке два числа ');
      writeln('и нажмите ');
      write('->');
      readln(nl,n2);
      while (nl mod n2)<>0 do
      begin
      r:=nl mod n2; { остаток от деления} nl:=n2; n2:=r;
      end;
      nod:=n2;
      writelnCНОД чисел ',nl,' и ',п2,' это ',nod); readln;
      
      Задача 138
      
      { Приветствие } var
      name: string[40]; { имя пользователя } begin
      writelnC Как Вас зовут?');
      writeln('(введите свое имя и нажмите ');
      write('->');
      readln(name);
      writeln('Здравствуйте, ',name,'!');
      readln; end.
      
      Задача 139
      
      { Посимвольный вывод сообщения ) uses
      Crt; { для доступа к процедуре Delay } var
      msg: string[80]; ( сообщение } n: integer; ( номер выводимого символа } begin
      msg:='Приветствую великого программиста! '; for n:=1 to Length(msg) do begin
      write(msg[n]);
      Delay(lOO); { задержка 0.1 сек } end; readln; end.
      
      Задача 140
      
      { Выводит код введенного символа } var
      sim: char; { символ } code: integer; ( код символа } begin
      writeln('Введите символ и нажмите .');
      writeln('Для завершения работы программы введите точку.');
      repeat
      write('->'); readln(sim) ; code:=Ord(sim) ;
      writeln('Символ: *,sim, ' Код: ',code); until sim = '.';
      end.
      
      Задача 141
      
      { Вывод таблицы кодировки символов } var
      ch:char; { символ }
      dec:integer; { десятичный код символа }
      i,j:integer;
      114
      in
      dec:=O;
      for i:=0 to 15 do ( шестнадцать строк } begin
      ' dec:=i; { чтобы получить таблицу кодировки} { для символов с кодами 128-255, } { эту инструкцию надо ) { заменить на dec:=i+128;} for j:=l to 8 do { восемь колонок } begin
      if(dec<7) or (dec>=14> then
      write(dec:4, '-', ' ',
      chr(dec):l,chr(179)) else { символы CR,LF,TAB не отображаются }
      write(dec:4,'- ',chr(179)); dec:=dec+16; and;
      writeln; { переход к новой строке экрана } end; readln; end.
      
      Задача 142
      
      var
      st: string[80]; { строка текста } len: integer; { длина строки } i: integer; { номер обрабатываемого символа ) begin
      writeln('Введите строку текста и нажмите '); write('->'); readln(st); len:=Length(st); for i:=l to len do
      case st[i] of
      •a'..'n': st[i]:=chr(ord(st[i])-32); 'р'-.'я1: st[i]:=chr(ord(st[i])-80);
      end;
      writeln('Строка, преобразованная к верхнему регистру: writeln(st); );
      readln; end.
      
      Задача 143
      
      { Удаление начальных пробелов строки } var
      st:string[80]; { строка } begin
      writeln('Удаление начальных пробелов строки.1);
      write('Введите строку:');
      readln(st);
      while (post1 ',st) = 1) and (length(st)>0) do delete(st,1/1);
      write('Строка без начальных пробелов:',st);
      readln; end.
      
      Задача 144
      
      ( Проверка, является ли введенная
      с клавиатуры строка целым числом } var
      st: string[40]; { строка }
      n: integer; { номер проверяемого символа } begin
      writeln('Введите число и нажмите ');
      write('->');
      readln(st);
      n:=l;
      while (n <= Length(St)) and
      ((st[n] >= '0') and (st[n] <-'9')) do n:=n+l;
      write('Введенная строка '); if n < Length(st)
      then write('не '); writeln('является целым числом. '); readln; end.
      
      Задача 146
      
      { проверяет, является ли введенная строка
      шестнаддатеричным числом } var
      st: string[20]; { строка }
      i: integer; { номер проверяемого символа }
      error: boolean; { в строке есть неверный символ } begin
      writeln('Введите шестнадцатеричное число и нажмите ');
      write('->');
      readln(st);
      { преобразуем введенную строку к верхнему регистру for i:=l to Length(st)
      do st[i]:=UpCase(st[i]);
      error:=FALSE;
      while (i <= Length(st)) and fnot error)
      do if ((st[i] >= '0') and (st[i] <= '9')) or
      ((st[i] >= 'A') and (st[i] <= 'F')) then i:=i+l else error:=TRUE;
      write('Строка '); if error
      then write('не ');
      writeln('является шестнадцатеричным числом. '); readln; end. { проверяет, является ли введенная строка дробным числом без знака }
      var
      st: string[20]; { строка }
      i: integer; { номер проверяемого символа }
      err: boolean; { TRUE - строка не дробное число }
      begin
      writeln('Введите дробное число и нажмите ');
      write('->');
      readln(st);
      i:=l;
      err:=TRUE; { пусть строка - не дробное число }
      if (st[i] >='l') and (st[i] <='9') then { первый символ
      цифра )
      begin
      { за цифрой возможно следут еще цифры } while (st[i] >='l') and (st[i] <='9') and (KLength(st) )
      do i:=i+l;
      { за цифрами следует точка, но она не последний символ } if ((st[i] = '.') and (i < Length(st))) then { точка } begin
      { за точкой должна быть хотя бы одна цифра } if ((st[i] >='l') and (st[i] <='9')) then begin
      while ((st[i] >='l') and (st[i] <='9') and (KLength(st) ) ) do i:=i+l;
      if i= Length(st) { последний символ - цифра} then err:=FALSE; { предположение
      об ошибке ложно } •nd; end; end;
      write('Строка '); if err
      then write('не ');
      writeln('является дробным числом.'); readln; end.
      
      Задача 148
      
      { Программа преобразует введенное с клавиатуры двоичное восьмиразрядное число в десятичное } var
      bin: string[8]; { изображение двоичного числа }
      : integer; { десятичное число }
      г: string[1]; { i-й разряд двоичного числа }
      v: integer; ( вес i-ro разряда двоичного числа }
      i: integer; { номер разряда двоичного числа }
      in
      writeln('Введите восьмиразрядное двоичное число');
      writeln('n нажмите .');
      write ('->');
      readln(bin);
      if Length(bin) <> 8 then
      writeln('Число должно быть восьмиразрядным.') else begin dec:=0;
      v:=128; {вес старшего (8-го) разряда двоичного числа } for i:=l to 8 do begin
      r:=bin[i]; { выделить i-й разряд } if г = 'I1 then
      dec:=dec+v; t
      v:=Round(v/2); { вычислить вес следующего разряда } end;
      write('Двоичному числу ',bin,'); writeln(' соответствует десятичное ',dec); end;
      writeln('Для завершения работы программы нажмите .');
      readln;
      
      Задача 149
      
      var
      st: string[2]; { шестнадцатеричное число }
      d: integer; { десятичное число, соответствующее
      введенному шестнадцатеричному }
      v: integer; { вес разряда шестнадцатеричного числа } 1: integer; begin
      writeln('Введите двухразрядное шестнадцатеричное число 'и нажмите .');
      write('->'); readln (st);
      { преобразуем введенную строку к верхнему регистру } for i:=l to Length(st)
      do st[i]:=UpCase(st[i]);
      i:=Length(st); { обрабатываем с младшего разряда } v:=l; {и его вес равен единице }
      while (i>0) and
      (((st[i] >= '0') and (st[i] <= '9')) or
      ((st[i] >= 'A') and (st[i] <= 'F'))) do begin
      { здесь символ - цифра или
      латинская буква от А до F) if (st[i] >= '0') and (st[i] <= '9') then d:=d + v * ( Ord(st[i])-48 )
      { Ord('O') = 48, Ord('l') = 49, и т.д. } else d:=d + v * (Ord(st[i]) - 55);
      { Ord('A') = 65, Ord('B') = 66, и т.д. }
      i:=i-l; { к предыдущему разряду } v:=v*16;
      end;
      if i=0 { обработаны все разряды }
      then writeln('Шестнадцатеричному числу ',st,
      ' соответствуе десятичное ',d) else writeln('Введенная строка не является ',
      'шеснадцатеричнои цифрой.');
      readln; end.
      
      Задача 150
      
      { Программа преобразует десятичное число
      в число в указанной пользователем системе счисления (от 2-х до 10-ти) )
      uses Crt;
      о:integer; n:integer; г:integer;
      s:string[16]
      { Основание системы счисления }
      { Исходное число }
      { Остаток от деления числа на основание
      сист. счисл. } { Представление числа в заданной
      сист. счисл. }
      buf:string[1]; begin
      ClrScr;
      write('Введите целое число -> '); readln(n);
      write('Введите основание системы счисления -> '); readln(o); s: = " ;
      { делим исходное число на основание системы счисления до тех пор, пока остаток от деления больше основания системы счисления. Остаток от деления на каждом шаге - очередная цифра. } repeat
      r:=n mod о; n:=n div о; Str(r,buf); s:=buf+s; until(n  ( очередная цифра } { целая часть деления } ( преобразование цифры в строку}
      ( Программа преобразует десятичное число
      в шестнадцатеричное } uses Crt;
      var
      n:integer; { Исходное число }
      r:integer; { Остаток от деления числа на основание сист. счисл. }
      s:string[16]; { Представление числа в заданной сист. счисл. }
      buf:string[1] ; begin
      ClrScr;
      write('Введите целое число -> ');
      readln(n);
      s: = " ;
      { делим исходное число на основание системы
      счисления (16) до тех пор, пока остаток от деления
      больше основания системы счисления.
      Остаток от деления на каждом шаге - очередная
      цифра. }
      write('Десятичному числу ' ,п) ; write (' соотвеств,ует шестнадцатеричное ') ; repeat
      r:=n mod 16; ( очередная цифра } n:=n div 16; { целая часть деления } if r<10
      then buf:=chr(r+48) { chr(48) = '0', chr(49)='l'
      и т.д. }
      else buf:=chr(r+55); { chr(65) = 'A', chr(66)='B'
      и т.д. } s:=buf+s; until(n<16) ; if n <> 0 then begin if n<10
      then buf:=chr(n+48) else buf:=chr(n+55); s:=buf+s; end;
      writeln(s); readln;
      end.
      { Программа вычисляет значение арифметического
      выражения, введенного с клавиатуры } uses Crt;
      s: string[80]; { сторока }
      1: integer; { длина строки }
      z: integer; { значение выражения }
      n: integer; { очередное число }
      i: integer; { номер числа в строке }
      err: integer; { код ошибки, при преобразовании символа в число }
      begin
      ClrScr;
      writeln('Введите арифметическое выражение,1);
      writeln('например, 4+5-3-5+2 и нажмите клавишу ');
      write('->');
      readln(s);
      val (s[1],z,err);
      i: =3 ;
      repeat
      val(s[i],n,err); { получить очередное однозначное
      число }
      if s[i-l] = '+' then z:=z+n else z:=z-n;
      until i > Length(s) ;
      writeln('Значение введенного выражения: *,z); writeln('Для завершения программы нажмите .'); readln; end.

    * * *

    round2-za_predelami_razuma

     
    Ваша оценка:
  • Прослушать:[mp3,1678k]
  • Размещена: 04/03/2007
  • Жанр: Хип-хоп
  •   Процедуры и функции
      
      В языке Паскаль, как и в большинстве языков программирования, предусмотрены средства, позволяющие оформлять вспомогательный алгоритм как подпрограмму. Это бывает необходимо тогда, когда какой-либо подалгоритм неоднократно повторяется в программе или имеется возможность использовать некоторые фрагменты уже разработанных ранее алгоритмов. Кроме того, подпрограммы применяются для разбиения крупных программ на отдельные смысловые части в соответствии с модульным принципом в программировании.
      
      Для использования подалгоритма в качестве подпрограммы ему необходимо присвоить имя и описать алгоритм по правилам языка Паскаль. В дальнейшем, при необходимости вызвать его в программе, делают вызов подпрограммы упоминанием в нужном месте имени соответствующего подалгоритма со списком входных и выходных данных. Такое упоминание приводит к выполнению входящих в подпрограмму операторов, работающих с указанными данными. После выполнения подпрограммы работа продолжается с той команды, которая непосредственно следует за вызовом подпрограммы.
      
      В языке Паскаль имеется два вида подпрограмм - процедуры и функции.
      
      Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными - передающиеся из подрограммы в вызывающий блок (результаты работы подпрограммы).
      
      Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими.
      
      
      
      Описание и вызов процедур и функций
      Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, перменных. Исполняемая часть содержит собственно операторы процедур.
      
      Формат описания процедуры имеет вид:
      
      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 при всех параметрах, которые обозначают результат работы подпрограммы. Однако, в связи с тем, что функция возвращает только один результат, в ее заголовке использовать параметры-переменные не рекомендуется.
      
      
      
      Локальные и глобальные идентификаторы
      Использование процедур и функций в Паскале тесно связано с некоторыми особенностями работы с идентификаторами (именами) в программе. В часности, не все имена всегда доступны для использования. Доступ к идентификатору в конкретный момент времени определяется тем, в каком блоке он описан.
      
      Имена, описанные в заголовке или разделе описаний процедуры или функции называют локальными для этого блока. Имена, описанные в блоке, соответствующем всей программе, называют глобальными. Следует помнить, что формальные параметры прцедур и функций всегда являются локальными переменными для соответствующих блоков.
      
      Основные правила работы с глобальными и локальными именами можно сформулировать так:
      
      Локальные имена доступны (считаются известными, "видимыми") только внутри того блока, где они описаны. Сам этот блок, и все другие, вложенные в него, называют областью видимости для этих локальных имен.
      Имена, описанные в одном блоке, могут совпадать с именами из других, как содержащих данный блок, так и вложенных в него. Это объясняется тем, что переменные, описанные в разных блоках (даже если они имеют одинаковые имена), хранятся в разных областях оперативной памяти.
      Глобальные имена хранятся в области памяти, называемой сегментом данных (статическим сегментом) программы. Они создаются на этапе компиляции и действительны на все время работы программы.
      
      В отличие от них, локальные переменные хранятся в специальной области памяти, которая называется стек. Они являются временными, так как создаются в момент входа в подпрограмму и уничтожаются при выходе из нее.
      
      Имя, описанное в блоке, "закрывает" совпадающие с ним имена из блоков, содержащие данный. Это означает, что если в двух блоках, один из которых содержится внутри другого, есть переменные с одинаковыми именами, то после входа во вложенный блок работа будет идти с локальной для данного блока переменной. Пременная с тем же имнем, описанная в объемлющем блоке, становится временно недоступной и это продолжается до момента выхода из вложенного блока.
      
      Рекомендуется все имена, которые имеют в подпрограммах чисто внутреннее, вспомогательное назначение, делать локальными. Это предохраняет от изменений глобальные объекты с такими же именами.
      

    * * *

    round2_chto-ti-skazhesh

     
    Ваша оценка:
  • Прослушать:[mp3,1624k]
  • Размещена: 11/04/2007
  • Жанр: Хип-хоп
  • Кёртиса, высекаю как сено у сенокоса,
    Косвенно, ты дошёл до стадии износа мозга,
    Кончатся, в его словаре слова и что он мне
    на это скажет, если секатор у меня в руке.  
                  у перекрёстка баттла раундов.
    
    в его текстах пафос аж из жопы капает,
    ...зазнался и считает себя намба уан,
    посад на ёлку лечит звёздную болезнь
    изувечив...намечен план тебя в утиль слить пацан,
    или мацан ты? но я не знаком с тобой,
    и судя по трэку, очередной понторез пустой,
    Это фэйсу фаллосом дыиженья, а не дисс,
    Ты не король, а шут у пьедестала павший ниц,
    обещал я буду равать аналы опонентам,
    готовь промежность и сбрей волос нарост,
    А кто лучше из нас гадай на кофейной гуще,
    я настоящий и считаю это преимуществом,
    в отличье от твоей слащавости уролог будущий,
    Я очень мощный, а твой шлягер это ваще шляпа,
    Но преподносишь как брилианты на аукцион,
    и кто пустил дебила к микрофону кто мне скажет?
    и кто пустил дебила к микрофону кто мне скажет?
    
    Мараться об засранца  мне приходится до конца,
    и моя цель его лицо отправить к праотцам.
  • Комментарии: 1, последний от 23/03/2009.
  • © Copyright Romich (...)
  • Обновлено: 08/09/2024. 0k. Статистика.
  • Хип-хоп

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

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