[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Программирование под ОС / Разное /

MIDI-технология в картинках и таблицах

Павел Живайкин


Появившаяся в начале восьмидесятых годов MIDI-технология вскоре получила новый импульс в связи с широким распространением персональных компьютеров. И хотя еще в 1991 году мне попалась какая-то статья, где почти со злорадством перечислялись ее недостатки и предсказывалась скорая кончина, до настоящего времени альтернативной идеи и альтернативной технологии создано не было.

Основными недостатками MIDI считаются низкая скорость передачи информации, узкий диапазон изменения параметров и ограниченная сфера применения. В то время как одно из главных ее достоинств — небольшой объем файлов — в последнее время уже потеряло решающее значение: цены на пишущие CD-приводы и “болванки” для записи становятся все доступнее. А с появлением широких возможностей по использованию при создании музыки готовых, заранее записанных музыкальных фраз с CD-качеством (всякие “лупы”, “сэмплы” и т.п.) многие “артисты” вообще решили, что таких проблем, как обучение нотной грамоте, владению инструментом, MIDI-технология и пр. для них не существует.

Следуя этой логике, запись музыки банальными нотами и диезами должна была уйти в небытие с появлением фонографа Эдисона. Вот когда настоящий прогресс пришел на смену устаревшей технологии и беспросветному консерватизму! Как подумаешь, что и Бах, и Шнитке пользовались одними и теми же пятью нотными линейками, то такие понятия, как “секвенсор” или “контроллер” уже не кажутся столь древними.

Однако если принять во внимание, что MIDI-технология изначально предназначалась не для записи или воспроизведения музыки, а только лишь для управления на некоем расстоянии (в пространстве и времени) синтезаторами, звуковыми модулями и прочими “железными” ящиками, то многие претензии к ней будут сняты. Это все равно, что упрекать виолончель за плохое звучание во флейтовом регистре. Научись правильной аранжировке, а иначе и Ростропович не поможет!

Итак, чтобы закончить мысль о достоинствах и недостатках MIDI, сделаем несколько предварительных выводов. Во-первых, MIDI-технология остается ведущей в компьютерной и аппаратно-студийной области. Во-вторых, она совершенствуется, учитывает новые требования и новые технические возможности. Об этом говорит последовательное появление стандартов GM, GS и XG. В-третьих, идея оказалась настолько удачной, что MIDI-технология вовлекает в сферу своего влияния все новые и новые области, для которых она и не предназначалась, — управление магнитофонами, устройствами звуковой обработки, микшерскими пультами (не говоря уже о мультимедийных продуктах и компьютерных играх).

Здесь же хочу затронуть еще одну близкую мне тему. В музыкальном обучении качество звучания уже не играет столь значительной роли, как в звукозаписи или концертной деятельности. Зато возможность воспроизводить изучаемый опус в любом темпе и (тут вокалисты и духовики должны затаить дыхание) в любой тональности делают MIDI-технологию незаменимой в музыкальных школах и училищах. Смешно сказать, но для этого достаточен 286-й компьютер со звуковой картой за 40 долл. Я думаю, недалеко то время, когда некий аппарат, подобными характеристиками станет распространенней метронома. А вместо толстых нотных сборников люди будут покупать дискеты с этюдами Черни или Шопена.

Не учиться, не учиться и еще раз не учиться


Когда ко мне приходит молодой человек с просьбой научить его работать с какой-нибудь программой, я предлагаю для начала пройти азы MIDI. Если до этого он уже записал пару треков на каком-нибудь секвенсоре, то его первая реакция: “Да это и так понятно”! Когда ему показываешь разницу между MIDI-файлом, “настуканным” (выражение грубое, но справедливое) одним пальцем в шаговом режиме, и аранжировкой, сделанной с учетом всех возможностей MIDI, он с энтузиазмом хватается за все доступные источники информации.

Здесь его подстерегают первые неприятности. В течение многих лет разные наши авторы пишут о MIDI в различных журналах, а иногда и в книгах. Это по-настоящему хорошо, потому что никакого другого учебника или пособия нет. Трудно судить о зарубежных изданиях, которые усиленно рекламируются в американских и английских музыкальных журналах. Переводить их — сплошное мучение из-за горючей смеси компьютерных, музыкальных и “жаргонно-тусовочных” терминов. Вполне возможно, что такой переводчик еще не родился.

О второй очереди неприятностей многие сразу и не догадываются. Дело в том, что эти пособия пишут не музыканты и преподаватели, а инженеры, программисты и дилеры. Не кажется странным, что учебник по теории музыки написан не Полом Маккартни или Владимиром Спиваковым, а скромным профессиональным педагогом. Я не думаю обижать или обвинять кого-нибудь из авторов. Спрос есть, и писать об этом надо. Но, к сожалению, и логика изложения, и форма, и прочие невинные педагогические приемы во всех материалах отсутствуют.

Рано или поздно об этом догадывается любой читатель. Он прочитывает страницу за страницей один раз, потом второй, третий… И, наконец, приходит к одному из трех выводов.

“Мне никогда этого не одолеть”, — решает он, и это порой справедливо. Сведения не систематизированы, изложены в произвольном порядке, отрывочны, и не все термины объяснены...

“Ну и черт с ним, проживу без этих премудростей”, — может подумать уставший читатель. И здесь я соглашусь — о смертельных исходах от незнания MIDI что-то пока не слыхать!

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

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

Во-вторых, ни в одном руководстве я не видел ничего похожего на фразу: “Здесь наша программа должна сделать то-то, но почему-то она этого не делает”. Столько полезного можно найти в журналах, что порой кажется, будто производители заранее договариваются с журналистами о том, какие они наделают “бяки” в программах, а уж писатели на радость читателям будут их на этом ловить.

На основании всего вышесказанного хочу обратиться к любому человеку, будь он музыкант, звукорежиссер, разработчик мультимедийных программ или простой любитель покопаться в музыкальных программах: MIDI-технология не устарела, не так уж и сложна и не будет тормозом в вашем творчестве — смелее!

В этом материале будут рассмотрены самые первые, и, пожалуй, самые главные темы — назначение MIDI и типы MIDI-сообщений.

Назначение MIDI и подключение MIDI-устройств


Что такое MIDI-технология


MIDI — Musical Instrument Digital Interface — компьютерный протокол (иногда говорят — язык), предназначенный для связи одного музыкального устройства с другим. Оба эти устройства должны обладать любого вида микропроцессором или программой, которые поддерживают MIDI-протокол.

wpe17.jpg (19925 bytes)

Рис. 1. Пример использования MIDI. На синтезаторе вы можете играть ноты, выбирать новый тембр инструмента, менять громкость, но сам он сейчас не звучит. Все перечисленные действия передаются по MIDI-кабелю (красного цвета) в виде команд на звуковой модуль. Последний выполняет все эти действия (звучат сыгранные ноты, меняется тембр и громкость) и выдает звук через обычные динамики. Красная стрелка показывает направление потока MIDI-сообщений

Цель MIDI — управлять работой музыкального устройства не с его панели или клавиатуры, а на расстоянии (по MIDI-кабелю) — с другого устройства. Для этого второе устройство передает первому последовательность управляющих команд, которые называются MIDI-сообщениями.

Какая информация передается с помощью MIDI


Все, что вы делаете, управляя работой своего музыкального устройства (крутите ручки, нажимаете на кнопки, играете на клавиатуре), может передаваться в виде управляющих MIDI-сообщений на ваше устройство с другого MIDI-устройства.

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

Примечание 2. Сам процесс передачи MIDI-сообщения может осуществляться в реальном времени (во время исполнения или воспроизведения музыки), но может быть и разорванным во времени. В этом случае MIDI-сообщение записывается в виде файла на дискету или хард-диск компьютера, а потом считывается устройством-получателем.

Какие музыкальные устройства могут получать и принимать информацию по MIDI

Технология MIDI с самого начала была предназначена для связи между самыми различными устройствами (синтезаторами, звуковыми модулями, компьютерами, устройствами цифровой обработки звука и многими другими).

MIDI-устройство должно иметь:

  • внутри — программу или микропроцессор, который понимает MIDI-информацию;
  • снаружи — разъемы, к которым подсоединяется MIDI-кабель.

MIDI-разъемы


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

Таблица 1. Виды MIDI-разъемов.
MIDI Out MIDI-выход. Через этот разъем устройство посылает MIDI сообщение на другое устройство
MIDI In MIDI-вход. Через этот разъем устройство получает MIDI сообщение от другого устройства
MIDI Thru Сквозной. Через этот разъем посылается точная копия любого MIDI-сообщения, которое поступило на разъем MIDI In

В качестве разъема для MIDI используется стандартный европейский 5-контактный разъем (рис. 2).

wpe18.jpg (12453 bytes)

Рис. 2. MIDI-разъем. Контакт 2 — земля, контакты 4 и 5 — сигнальные, контакты 1 и 3 — не используются.

Существует три вида MIDI-разъемов. Назначение каждого понятно из табл. 1.

MIDI-кабель соответственно должен иметь три провода, которые соединяют контакты 1, 4 и 5 на обоих его концах.

Соединение MIDI-устройств между собой


Всегда одно устройство передает MIDI-сообщение, другое получает. MIDI-кабель связывает разъем MIDI Out передающего устройства с разъемом MIDI In принимающего (рис. 1). Если вы хотите направить информацию в обратную сторону, вы должны соединить устройства по-новому (в соответствии с тем, что было сказано в предыдущем предложении) или использовать еще один кабель и, опять же, связать MIDI-выход одного устройства с MIDI-входом другого (рис. 3).

wpe1A.jpg (22487 bytes)

Рис. 3. По одному MIDI-кабелю синтезатор передает MIDI-сообщение на звуковой модуль. Затем (но не одновременно) по другому MIDI-кабелю этот модуль может послать свое MIDI-сообщение на синтезатор

У любого устройства имеется только один MIDI-выход. Поэтому, если с него нужно посылать команды на два или несколько других устройств, используется разъем MIDI Thru. Тогда подключение устройств-приемников происходит последовательно (рис. 4). Но имеются, конечно, и специальные приборы, которые способны разветвлять MIDI-сообщения. Тогда нет необходимости в последовательном подключении MIDI-устройств.

wpe1C.jpg (34188 bytes)

Рис. 4. Компьютер посылает MIDI-сообщения для синтезатора и звукового модуля через свой MIDI-выход. Они оба поступают на MIDI-вход синтезатора, оба выходят через его разъем MIDI Thru. Синтезатор не может добавить никакую свою информацию, поэтому эти MIDI-сообщения в неизмененном виде поступают на MIDI-вход звукового модуля. Каждое из устройств-получателей само определяет, какие команды, находящиеся в MIDI-сообщениях, ему следует выполнять. Кривые линии красного цвета изображают MIDI-кабели, прямые линии красного цвета — схематический путь MIDI-информации

Итак, первое — при подключении MIDI-устройств вы всегда должны учитывать направление передачи информации. Второе — при подключении третьего и следующих MIDI-устройств вы должны пользоваться разъемом MIDI Thru. Третье — передаваемая MIDI-информация аналогична управлению вашим синтезатором с помощью ручек, кнопок или клавиш.

MIDI-сообщение


Как записывается MIDI-сообщение


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

MIDI-сообщение — это управляющая команда, использующая особый язык (протокол) MIDI.

MIDI-сообщение (как и любое компьютерное сообщение) записывается в битах, то есть выглядит как последовательность цифр 1 или 0 — 10011010 00101110… Но так как такая запись выглядит очень громоздкой, то для чтения и редактирования MIDI-сообщений применяется шестнадцатеричный способ записи иединица измерения — байт.

Записать число

В байтах (в шестнадцатеричном виде)

В байтах (в двоичном виде)

В байтах (в десятичном виде)

00

0000 0000

0

01

0000 0001

1

02

0000 0010

2

03

0000 0011

3

04

0000 0100

4

05

0000 0101

5

06

0000 0110

6

07

0000 0111

7

08

0000 1000

8

09

0000 1001

9

0A

0000 1010

10

0B

0000 1011

11

0C

0000 1100

12

0D

0000 1101

13

0E

0000 1110

14

0F

0000 1111

15

10

0001 0000

16

11

0001 0001

17

12

0001 0010

18

FF

1111 1111

127

Для того, чтобы быть понятным, MIDI-сообщение имеет четкую структуру. Эта структура зависит от типа MIDI-сообщения.

Типы MIDI-сообщений


Все типы MIDI-сообщений делятся на две большие группы (рис. 5). Системные MIDI-сообщения (System message) передают команды, которые воздействуют на общие параметры и режимы работы всех устройств-получателей.

pr0035.jpg (9602 bytes)

Рис. 5. Разделение всех типов MIDI-сообщений на две группы

Примером системного сообщения может служить команда “Старт”, которая включает режим воспроизведения у любого секвенсора или магнитофона, находящегося в MIDI-связке.

Канальные MIDI-сообщения (Channel message) включают в себя номер MIDI-канала и передают сообщения на каждый MIDI-канал индивидуально. Всего для одного (и каждого) устройства MIDI-технология предусматривает 16 MIDI-каналов.

MIDI-каналы


Представьте себе обычный многодорожечный магнитофон. На одну дорожку можно записать трубу, на другую — гитару и так далее. При воспроизведении мы слышим все записанные дорожки одновременно.

MIDI-каналы предназначены для того, чтобы один синтезатор или звуковой модуль мог играть несколькими разными тембрами одновременно, причем каждый тембр (инструмент) исполняет свою независимую партию.

Когда одно устройство передает канальные MIDI-сообщения на другое, внешне это выглядит так, как если бы они были соединены шестнадцатью кабелями (и по каждому следуют указания о том, какие ноты каким тембром играть).

pr0036.jpg (29751 bytes)

Рис. 6. Разделение MIDI-сообщений на MIDI-каналы

На самом деле MIDI-технология использует один кабель, но в каждое канальное MIDI-сообщение вписывается номер MIDI-канала, для которого оно предназначено. Устройство-получатель, пользуясь этим номером, направляет каждое канальное MIDI-сообщение на свой канал (рис. 6).

Типы сообщений из группы Channel


Канальные MIDI-сообщения можно разделить по типам их структуры и по их целям. В последнем случае имеются две группы MIDI-сообщений: голосовые (Voice message) и режимные (Mode message).

wpe24.jpg (91690 bytes)

Рис. 7. MIDI-сообщения из группы Channel. Все режимные сообщения по типу (а не по функциям, как они разделены на этом рисунке) являются MIDI-сообщениями типа Control Change, поэтому изображены одним цветом и обведены пунктиром

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

Режимные сообщения тоже делятся на две группы. Первая группа воздействует на конкретный MIDI-канал (эти сообщения устанавливают канал в состояние по умолчанию — сбрасывают все ноты, настраивают канал на стандартную высоту звука и пр.).

Сообщения второй режимной группы воздействуют на все MIDI-устройство в целом, другими словами, устанавливают режим его работы.

MIDI-сообщения группы System


В отличие от канальных сообщений все MIDI-сообщения группы System message принадлежат одному типу (то есть имеют одинаковый статус). Это можно увидеть и на рис. 7.

Но по своему функциональному назначению их делят на три подгруппы (рис. 8). К первой из них (System Real Time) относятся сообщения, связанные с синхронизацией работы двух MIDI-устройств.

wpe26.jpg (82370 bytes)

Рис. 8. MIDI-сообщения из группы System message (подгруппы показаны разным цветом, но по статусу принадлежат к одному типу — Control Change)

Во второй подгруппе (System Common) находятся сообщения, которые одинаково воспринимаются всеми MIDI-устройствами. Поэтому они и называются “общими”. Эта группа просто собрана из различных MIDI-сообщений, и между ними нет никакой логической связи.

Сообщения третьей группы (System Exclusive) являются одними из самых важных и самых неформализованных в MIDI-технологии. Они носят название “эксклюзивные”, потому что содержание данных определяется для каждого MIDI-устройства своей фирмой-производителем и не может быть распознано устройством другой модели или фирмы. Среди этих сообщений могут быть команды о настройке всего устройства целиком или отдельных его модулей. Другие сообщения управляют процессом передачи данных сэмплов или каких-то специальных файлов (Sample Dump, File Dump).

Структура MIDI-сообщения


Каждое MIDI-сообщение (кроме System Exclusive) состоит из одного, двух или трех байтов (рис. 9). Первый байт содержит информацию о типе MIDI-сообщения — Status byte (иногда называют Status Bar). Этот байт определяет тип сообщения, и затем, в зависимости от типа, устройство-получатель будет перерабатывать другие байты этого MIDI-сообщения в соответствующую команду.

Некоторые MIDI-сообщения (например, Program Change) не имеют второго байта данных.

Если MIDI-сообщение является канальным, то его первый байт (кроме статуса) содержит номер MIDI-канала. Второй и третий байты MIDI-сообщения называются Байт данных 1 (Data byte 1) и Байт данных 2 (Data byte 2). Байты данных содержат конкретную информацию, которую несет это MIDI-сообщение. Например, для сообщения “Взять ноту” Байт данных 1 указывает, какую именно ноту, а Байт данных 2 — с какой громкостью.

wpe27.jpg (32140 bytes)

Рис. 9. Возможные виды MIDI-сообщений группы Channel message

Сообщения типа System Exclusive могут содержать большое количество байтов данных (рис. 10).

wpe28.jpg (28079 bytes)

Рис. 10. Возможные виды MIDI-сообщений типа System message

А MIDI-сообщения типа System Real time содержат только Status byte.

Как определяется тип MIDI-сообщения


Как уже отмечалось, тип MIDI-сообщения определяется по его статус-байту. В табл. 2 показаны различные значения статус-байта и соответствующие типы сообщений.

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

Любое MIDI-устройство не обязано посылать или отрабатывать обязательно все типы сообщений. Каждая фирма-производитель исходит из соображений целесообразности. Из этого следует, что различные MIDI-устройства, например синтезаторы, в одинаковых условиях могут вести себя по-разному (хотя с этим идет борьба). Самые простые домашние синтезаторы (с уменьшенными клавишами) не воспринимают, например, силу удара по клавише — громкость можно менять только ручкой и для всего инструмента сразу. Это напоминает игру на аккордеоне, только у него громкость зависит от величины разведения мехов.

А на практике?


Для чего, кому, и в каком объеме нужно разбираться в MIDI-технологии? Если вы принесли из магазина синтезатор, включили его, и он заиграл — то, возможно, никаких знаний и не потребуется. Кстати, такова цель любого производителя.

Знания нужны или потому, что что-то не работает (а может быть оно, кстати, и не должно работать), или для того, чтобы применить их в каком-то творческом процессе. Во втором случае вам придется подробней разобраться в тонкостях MIDI-технологии, но, конечно, в рамках необходимости. Абсолютно сведущих специалистов, возможно, вообще нет, так как процессом развития этой области занимаются многие фирмы в разных концах земного шара.

Для иллюстрации же первого случая разберем простой пример. Посмотрите еще раз на рис. 1. Вы правильно соединили проверенным MIDI-кабелем два устройства (то есть MIDI Out синтезатора с MIDI In звукового модуля), а звука в колонках нет, хотя демонстрационные пьесы самого модуля играют. И сам по себе синтезатор тоже играет. Налицо факт отсутствия понимания между устройствами.

Проверяем у синтезатора:

  • включен ли режим посылки MIDI-сообщений (по умолчанию — включен, но вдруг вы что-то перепутали);
  • какой MIDI-канал установлен для посылки MIDI-сообщений (установите, например, MIDI Channel=1);
  • есть ли фильтр для посылки MIDI-сообщений (вдруг там, например, отсеиваются взятия нот).

Некоторые MIDI-устройства и компьютерные программы имеют кнопку Reset или Panic, которая устанавливает все параметры в значения по умолчанию. Если она имеется, воспользуйтесь ею.

Проверяем у звукового модуля:

  • включен ли режим приема MIDI-сообщений (по умолчанию должен быть включен);
  • какой режим приема включен (он может быть разным в зависимости от устройства: возможно, включен режим Mono, и тогда ваш звуковой модуль будет играть, но одним тембром независимо от MIDI-канала) —необходимо установить режим Poly;
  • какой MIDI-канал установлен для приема MIDI-сообщения (если установлен режим Poly, то сообщения будут приниматься по всем шестнадцати каналам одновременно);
  • есть ли фильтр для приема MIDI-сообщений (а вот приемный фильтр у всех уважающих себя устройств имеется), и что у него выставлено.

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

Все это верно и при подключении синтезатора к компьютеру, только в роли звукового модуля будет выступать установленная на компьютере программа.

И последнее. На стандартном синтезаторе колесико или рычажок слева от клавиатуры посылает MIDI-сообщения типа Pitch Bend (изменение высоты звука). Колесико или рычажок, называемый Modulation, посылает сообщение Control Change (см. рис. 9, первый байт данных равен единице, что и означает модуляцию, второй байт равен глубине модуляции). Ручка или движок громкости тоже посылает сообщение Control Change (первый байт данных равен семи, что означает громкость, второй байт сообщает о силе громкости).

Кнопки или ручки, меняющие громкость, посылают MIDI-сообщение типа Program Change (оно имеет только первый байт данных — номер тембра).

E="1"> 

Таблица 2. Определение типа MIDI-сообщения по статус-байту
Группа MIDI-сообщений Status byte Тип MIDI-сообщения Пояснение
Channel 8 Note Off Снятие ноты
  9 Note On Взятие ноты
  A Aftertouch Poly (Polyphonic Key Pressure) Контроллер Aftertouch, который влияет на отдельную ноту
  B Control Change Контроллер для изменения какого-нибудь параметра MIDI-канала
  C Program Change Номер тембра для MIDI-канала  
  D Aftertouch Channel (Channel Pressure) Контроллер Aftertouch, который влияет на все ноты MIDI-канала
  E Pitch Bend Относительное изменение высоты звука (влияет на все ноты MIDI-канала)
System F System Real Time Сообщения, которые передаются не для отдельного MIDI-канала, а для всего устройства или группы устройств
      Common  
      Exclusive  

И, конечно, все эти сообщения имеют в статус-байте букву — E, B, B и С соответственно — и номер MIDI-канала (см. рис. 9 и табл. 2).




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Программирование под ОС / Разное /

Комментарии к небольшой серии статей о недокументированных возможностях MS-DOS
15-02-2010   

Описываемые возможности проникновения в DOS и недокументированное поведение функции 13h являются серьезной прорехой с точки зрения недопущения несанкционированных действий и в то же время лакомым кусочком для создателей вирусов... подробнее

Кол. просмотров: общее - 2936 сегодня - 0

Программирование портов ввода/вывода
17-01-2010   

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

Кол. просмотров: общее - 3016 сегодня - 0

Особенности языков программирования и файловый ввод-вывод
17-01-2010   

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

Кол. просмотров: общее - 3165 сегодня - 0

Prolog - Лабораторная работа, работа со списками 2.
14-12-2009   

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

Кол. просмотров: общее - 3017 сегодня - 1

Prolog - Вписать треугольник в окружность.
14-12-2009   
Кол. просмотров: общее - 3102 сегодня - 0



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects