Урок 7: Первая мелодия Конечно, расписывать очень подробно все возможности и функции MT - нет времени. Вам придется и самостоятельно изучать справку выдаваемую по F1 или документацию (из MPTRACK.hlp). Там всё очень подробно изложенно (на английском). Поэтому Вам придется запастись словарем или программой-переводчиком и кое-что всё же узнать самим. Базовые знания Вы получите в этих уроках. |
Скачайте ModPlug Tracker 1.16 и испробуйте его - вот вам дистрибутив. ModPlug Tracker относится к бесплатным, свободно распространяемым программам - поэтому смело используйте его для создания своей музыки и рекомендуйте друзьям! |
||
Итак, попробуйте установить текстовый курсор на первую дорожку или правильнее канал (Chnl 1) на первый мини-столбец, в строку 000 и нажмите клавишу [z]. Вы услышите проигранную ноту и увидите, что в столбце появилась запись С-4. Это означает, что вы записали в канал ноту "до" четвертой октавы. Т.к. выбранный текущий инструмент был сэмпл 1, то переместившись во второй мини-столбец Вы увидите, что там записан номер сэмпла - 01. Таким вот образом и ведется запись музыки. Чтобы ноты звучали не подряд, а с паузами просто расставляйте их с интервалами из пустых строк. Давайте запишем простейшую ударную партию - просто равномерное стуканье - для этого расставляйте ноту С-4 в каждую четвертую строчку, т.е. в 0, 4, 8, 12 и т.д. до конца паттерна. |
Чтобы
сделать это быстро (т.к. нота будет одна и та же) нажмите Alt+4 - установив
тем самым шаг курсора в четыре строки и нажмите и удерживайте ноту C-4
(т.е. клавишу [z]) до тех пор, пока она не заполнит весь паттерн
до конца. Теперь снова нажмите Alt+1, чтобы установить шаг - 1. |
||
Заставим теперь MT проиграть наш первый трэк. Перейдите в таблицу порядка воспроизведения ------> и в строке 000 которая пока заполнена точками "..." введите номер вашего первого паттерна - 000 - для этого Вам достаточно нажать клавишу [0] (нуль). Теперь IT сможет воспроизвести Ваш паттерн и всю Вашу композицию, которая пока как раз и состоит из одного паттерна, потому что в списке воспроизведения указан этот паттерн только 1 раз. |
Тут будут небольшие дополнительные действия: дело в том, что мало создать паттерны, надо также дать знать MT в каком порядке их воспроизводить. Для этого служит список порядка воспроизведения паттернов (Order List). Он представлен в виде длинной строки расположенной сразу над окном редактирования паттернов 7 (см. урок 4) |
||
Чтобы воспроизвести созданный трэк нажмите F5. И Вы услышите первую свою композицию! Она будет воспроизводиться бесконечно, потому что MT по окончании мелодии снова переходит в начало и повторяет проигрывание. Чтобы остановить процесс нажмите F8. Снова вернитесь в окно редактирования паттернов - вкладка Patterns и попробуйте поэкспериментировать со своим трэком вводя в первом канале разные ноты в разных позициях. Затем пробуйте воспроизводить полученное. |
Конечно пока это лишь эксперименты, Вам еще пока далеко до настоящей композиции, но Вы теперь должны понять в чем состоит принцип работы в трэкере: Вы придумываете мелодию, набираете ее в трэках, создаете список воспроизведения паттернов в таблице порядка воспроизведения и получаете полноценную композицию. |
||
Для того, чтобы наигрывать мелодию на клавиатуре, пока не записывая ее в каналы паттернов, можно отключить режим записи (Ctrl+Space) или кнопка Record на панели вкладки Patterns и просто нажимать нотные клавиши (см. 6 урок). Так можно постепенно придумывать мелодию играя ее на клавиатуре. |
Единственное неудобство, так это то, что как только Вы захотите сыграть какую-то ноту более высокой или низкой октавы, Вам надо будет сначала сдвинуть базовую октаву - клавиши / и * на цифровой клавиатуре. Но MT и не предназначен для создания музыки "на лету". Его принцип - сначала придумай, а потом набери в паттернах, а после - проигрывай то, что получилось. |
||
Во время создания своих мелодий Вы столкнетесь с необходимостью редактировать содержимое каналов, т.е. вставлять, удалять, раздвигать ноты. Для этого используются следующие клавиши: [Delete] - удаляет ноту в текущей позиции; [Shift]+[Delete] - сдвигает все ноты канала на одну позицию вверх - на место удаленной ноты - т.е. осуществляется удаление и вертикальный сдвиг канала. Клавиша [Insert] служит для обратной операции - вставки пустого промежутка и раздвижки. Если Вы хотите удалить ноту не производя сдвига, то можете перевести курсор на эту ноту и просто ввести новую нажатием на соотвествующую нотную клавишу. |
Чтобы
удалить ноту не вставляя новой и не производя сдвигов нажмите клавишу
[.] (точка). Можно производить вставку/удаление не только в одном, а сразу
во всех каналах - для этого мышью надо выделить эти каналы. |
||
Теперь,
когда Вы поняли основной принцип работы перейдем к изучению других возможностей
MT. Рассмотрим как изменять номер сэмпла для уже записанных нот, как задавать
громкость ноты (во время проигрывания композиции), а также использовать
различные эффекты - спад, подъем громкости, изменение частоты, вибрацию
и т.д. |
Вообще MT поддерживает следующие эффекты, которые задаются в виде соответствующих команд и записываются напротив нот в 3-ем и 4-ом мини-столбцах: Спад/Повышение громкости; Подъем/Понижение частоты; плавное снижение до ноты (портаменто); вибрация, тремор, арпеджио, смещение, пересчет, тремело, задание значения громкости, панорамы, изменение их, панбрелло. Все эффекты записываются в виде буквы и хх, например, Dxx, буква - это идентификатор эффекта, а хх - его числовой параметр. Чтобы задать эффект для текущей ноты надо перейти в четвертый мини-столбец напротив этой ноты и ввести эту команду нажав D. xx - означает какое-либо число (от 00 до FF). |
||
Чтобы более подробно познакомиться с возможностями MT читайте файл MPTRACK.hlp или выберите пункты меню: Help > Contents > и нужный раздел справки. Правда информация дана на английском. |
Важное замечание!: дело в том, что для записи числовых параметров команд эффектов используется шестнадцатиричная система счисления - она более компактна, т.к. позволяет всего в 2-х позициях записать 256 различных значений (т.е. число от 0 до 255). Шестнадцатиричная система счисления использует для записи чисел цифры от 0 до 9 и буквы от A до F. Поэтому имейте в виду!, что все числа параметров эффектов - шестнадцатиричные. Например, если вы запишите команду AB1 (А - специально выделено жирным, чтобы отличить ее от следующей буквы - B. Т.е. записана команда A и ее параметр B1). | ||
Итак, попробуем посмотреть список команд для генерирования различных эффектов. Сначала вызовите справку (Help>Contents), затем Getting started>Effects - и Вы получите контекстную справку по этому разделу. Прокручивать текст справки можно клавишами используя полосу прокрутки (или колесико мышки). Что там описано?: IT (Impulse Tracker Effects) Aхх Вхх Cxx и т.д. |
Пока не будем приводить здесь полный список команд эффектов и их назначений. Если Вам уже не терпится, то попробуйте перевести Help и разобраться сами (потому что рано или поздно Вам все же придется это делать). А пока пару слов о шестнадцатиричной системе счисления и записи параметров команд. Итак, если Вы заглянете в Help (то бишь справку) для режима редактирования паттернов, то по эффекту Axx прочтете следующее: Axx Set song speed (hex) - установить скорость композиции (шестнадцатиричное). Bxx Jump to Order (hex) - перейти к позиции таблицы порядка воспроизведения. и т.д. Возьмем например команду Bxx. Как ее использовать, точнее какое значение задать в качестве параметра? Ведь в списке таблицы порядка воспроизведения числа позиций и сами номера паттернов записаны в виде десятичных. Переход из десятичной системы счисления в шестнадцатиричную и обратно для двузначных чисел осуществляется довольно просто: h - hex шестнадцатирочное число; без h - обычное десятичное. Итак, для двузначных шестнадцатиричных чисел все десятичные значения находятся в диапазоне от 0 до 255, т.е. не превышают границы в 1 байт. Поэтому чтобы превратить такое число в шестнадцатиричное надо разделить его, используя целочисленное деление, на 16. А остаток записать в виде младшего разряда. Т.к. в шестнадцатиричной системе счисления используются числа от 0 до 15, причём цифры 0-9 имеют то же значение, а числа 10-15 записываются буквой от A до F. То запись ведется этими символами. |
||
|
|||
Если с этим со всем Вам всё ясно, то можно перейти на следующий урок. В нём мы узнаем больше о настройке параметров загруженных сэмплов, изменении глобальных настроек композиции: темпа и скорости воспроизведения нот, общей громкости и т.д. | Например, дано число 72. 72 div 16 = 4 72 - 16*4 = 8 т.е. 72 = 48h
Обратный перевод: осуществляется еще проще - 9Ah = 9*16+10 = 154 т.е. старший разряд шестнадцатиричного числа умножается на 16 (если в разряде стоит символ от A до F, то разряд представляет уже значение от 10 до 15), а второй разряд переводится в десятичное и просто приплюсовывается к полученному произведению. В крайнем случае используйте Windows-калькулятор в инженерном режиме для переводов из одной системы в другую. |
||
Напоследок скажем лишь как сохранить Ваши труды и выйти из MT: для сохранения нажмите File > Save As и в поле filename в нижней части экрана введите имя для файла вашей композиции. Чтобы сохранить композицию с заданным именем файла в текущую папку - нажмите File > Save. Имейте в виду - файл попадет в папку, которая была в данный момент текущей. Если вы хотите изменить папку и/или диск - используйте File > Save As. |
IT - композиция сохраняется в формате *.it
|
||
[Предыдущий урок] [Следующий урок] | [Все уроки] |
![]() |
||
Как создать игру ? - Программируем сами. Рассмотрение программирования игр под DirectX 9c на C++ с использованием среды разработки MSVS 2005 или выше. |
||
[содержание] [назад] [страница 3] [далее] | ||
Самый первый шаг - страница 3 | ||
В процессе компиляции примера CreateDevice почти наверняка у Вас будут ошибки. Ошибки эти связаны не с правильностью написанного кода, если Вы конечно сами его пока не изменяли, а с подключением заголовочных и библиотечных файлов. |
||
Устраним этот важный и существенный недочет, который доставляет так много хлопот новичкам, готовым к созданию игр, но новые и новые трудности никак не дают достичь желаемого и встают на пути. | ||
Выполним настройки проекта CreateDevice | ||
В окне Solution Explorer выберите строку CreateDevice | ||
Далее выберите пункт меню Project > Properties | ||
В открывшемся окне CreateDevice Property Pages в левой его части найдите и нажмите на "+" около наименования Configuration Properties | ||
Нам будут нужны всего 2 узла: C/C++ и Linker | ||
![]() |
||
раскрываем эти узлы и прописываем внутри них - для C/C++ / General в поле Additional Include Directories - ..\..\..\..\..\Include\;..\..\..\DXUT\Core |
||
![]() |
||
для Linker / General Additional Library Directories - ..\..\..\..\..\Lib\x86; |
||
![]() |
||
возможно еще придется указать имена файлов библиотек - Linker / Input для Configuration Debug Additional Dependencies - d3dxof.lib dxguid.lib d3dx9d.lib d3d9.lib winmm.lib и Linker / Input для Configuration Release Additional Dependencies - d3dxof.lib dxguid.lib d3dx9.lib d3d9.lib winmm.lib Обратите внимание красным цветом я отметил имена файлов библиотек, которые отличны для отладочной Debug и окончательной Release сборки проекта. |
||
![]() |
||
После таких настроек и нажатия кнопки OK или Применить, с последующей сборкой проекта в режиме конфигурации Debug или Release ошибок быть не должно. | ||
Ну и наконец последний, и самый волнительный момент - открываем папку C:\DXSDK_Aug2008\Samples\C++\Direct3D\Tutorials\Tut01_CreateDevice\Debug или C:\DXSDK_Aug2008\Samples\C++\Direct3D\Tutorials\Tut01_CreateDevice\Release в зависимости от того, что Вы собирали - отладочную или окончательную версию проекта и запускаем файл CreateDevice.exe двойным кликом по нему. |
||
![]() |
||
Как видим - перед нами небольшое окно, вся рабочая область которого заполнена синим цветом. Окно имеет заголовок D3D Tutorial 01: Create Device, именно тот самый текст, который был указан в качестве второго параметра функции CreateWindow в коде функции wWinMain. Окно ведет себя как самое типичное Windows-приложение - его можно перемещать по экрану, менять в размере, сворачивать, увеличивать во весь экран. При выборе кнопки X в правой части заголовка окна приложение завершит работу. |
||
Итак, подведем итоги: 1) Мы посмотрели кое-что из того, как работать в среде MSVS, если Ваш опыт в этом деле недостаточен - тренируйтесь и еще раз тренируйтесь - и мы это будем делать на протяжении всех последующих уроков; 2) Создали самое что-ни-на-есть простейшее DirectX-приложение, конечно Вам тут нужно еще попрактиковаться, разобраться что к чему, почитать в конце концов справочное руководство по DirectX и MSVS. Но кое-что я думаю Вы уже должны усвоить, например, как сменить цвет заполнения рабочей области окна с синего на какой-то другой, или как изменить название заголовка окна. Если Вы знаете ответ на эти вопросы - значит можно с уверенностью сказать что кое в чем Вы уже разобрались ! 3) Нам нужно еще попробовать модифицировать наше приложение для проверки и отладки, а также усвоения выданной Вам порции информации для размышления. Этим мы и займемся в следующем нашем уроке - далее |
||
[содержание] [назад] [страница 3] [далее] | ||
Новые композиции, написанные мною в 2013 году
bless you - благослави тебя - 6:40 - 17 января 2013 г - продолжаю развивать музыкальные идеи, которые родились в новогодних композициях фристайлинг (см. новогоднюю вечеринку) | ||
|
||
bless you - версия 3 - 5:26 - 19 января 2013 г - продолжение развития темы bless you, заменил ударник на более глухой и чуть укоротил метраж - композиция зазвучала совершенно иначе :))) | ||
|
||
СССР - Создаем Сайт Своими Руками - конструируем свой сайт - полезные статьи для начинающих строителей сайтов. Итак, Вы решили создать свой сайт, но уже не на бесплатном хостинге, а на хостинге поддерживающем PHP, MySQL. Другие статьи на тему создания сайтов, PHP и MySQL смотрите в разделе Статьи |
||
В первую очередь что нужно иметь под рукой: 1) набор Web разработчика denver - этот набор включает все необходимые Вам программы для отладки и разработки Вашего сайта, включая PHP, MySQL, Apache, PERL, PostgreSQL; 2) и конечно же Вам понадобится какой-либо удобный html-редактор, например неплохим выбором является Macromedia Dreamweaver; |
||
После того, как Вы скачаете всё необходимое на свой ПК, нужно установить эти программы и начать работу. | ||
Если пакет denver корректно установлен в Вашей системе, то при вызове браузера Internet Explorer и наборе в его адресной строке ссылки http://localhost/ |
||
Вы будете попадать на заглавную страницу denver'а. | ||
Рабочие примеры этого урока мы будем размещать в папке - С:\WebServers\home\localhost\www\phpwork |
||
Где С:\WebServers расположение установленного пакета denver в Вашей системе по-умолчанию. Если Вы при установке denver'а задали другой путь - используйте его. | ||
Введение в программирование на php - выводим дату и время | ||
Наш первый скрипт на php. Сначала поясним для чего всё это нужно ? Хостинг с php, сам язык php, что всё это Вам дает ? Пока Вы не умеете его использовать - конечно же ничего. Но даже не умея пользоваться php совсем, всегда можно найти готовые рабочие скрипты, которые будут выполнять какие-либо полезные действия. Мы создадим простейший скрипт, который будет просто выводить в окно браузера страничку с отображением текущей даты. Освоив этот пример Вы узнаете: - Как создаются php-скрипты и как они работают; - Что собой представляет язык php. |
||
Если у Вас есть под рукой HTML-редактор, то в нём нужно создать новый пустой документ и внести в него следующий код - <HTML> <TITLE>Наш первый скрипт на PHP</TITLE>
<font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Сегодня</font>
?> </BODY> |
||
Затем нужно сохранить созданный файл в папку С:\WebServers\home\localhost\www\phpwork под именем, например intro1.php Далее в браузере набираем адрес http://localhost/phpwork/intro1.php Если Вы пока еще не обзавелись своим хорошим html-редактором, можно просто набрать данный текст в текстовом редакторе Блокнот, а затем сохранить с расширением php. |
||
И получаем результат - в окне браузера будет выведена страница с заголовком "Наш первый скрипт на PHP" и текстом на самой странице Сегодня 13, July, 2010, 11:29 am |
||
У Вас конечно же будет выведена другая текущая дата и время | ||
Теперь поговорим о возможностях php. Скрипт как видите - представляет из себя обычный html-документ, включающий стандартные теги. Отличием является - расширение php вместо html и наличие кода в новых тегах - <? php ?> Всё, что находится между этими двумя тегами не попадает в выводимую Web-страницу - убедитесь сами - попробуйте сохранить сформированную страницу из браузера на диск, а затем посмотрите её код. Вы увидите, что это обычная статичная html-страница. |
||
Как видим php-скрипты выполняются на стороне сервера и сам код скрипта не попадает в создаваему в окне клиента страничку. | ||
Смысл использования php становится Вам понятен - язык php - используется для динамического формирования содержимого web-страниц. Это дает достаточно широкие возможности по автоматизации и упорядочению информации Вашего сайта. |
||
Думаю не стоит перечислять все достоинства php и его приемущества, Вы скоро сами убедитесь в их наличии и примете окончательное решение - стоит ли Вам применять php для создания своего сайта или не стоит. | ||
Ну а код, который я привел содержит всего одну операцию - echo date("j, F, Y, g:i a"); Функция date запрашивает на сервере текущую дату и время, а функция echo выводит результат на web-страничку. Запись в кавычках "j, F, Y, g:i a" представляет набор параметров функции date и определяет что и в каком виде нужно выводить - сначала число, затем имя месяца, год, часы и минуты, а также указатель am/pm - означающий первую/вторую половину дня при 12 часовом формате отображения времени. |
||
Применив этот скрипт на страничках Вашего сайта - код <?php
?> можно вставить в любом месте создаваемого шаблона web-страницы Вы получите ожившие страницы Вашего сайта - всегда отображающие текущее время, что выглядит уже интереснее, нежели давняя дата, которая была бы Вами вставлена на страницу в виде обычного статичного текста, если бы Вы применили обычный html, а не php. |
||
В следующей нашей статье мы рассмотрим Как выводить русскоязычное название месяца, а также время в 24 часовом формате, мы также познакомимся с оператором switch языка php. | ||
Введение в программирование игр на С++ для платформы DirectX 9 Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 |
||
Данный небольшой урок является введением в программирование игр на C++ для DirectX 9 Вам нужно иметь установленную среду Microsoft Visual Studio 2005 или 2008 (можно триал), и DirectX SDK 9 версии, или лучше самой последней - DirectX SDK August 2008. |
||
[назад] [далее] [к содержанию] | ||
Мы рассматриваем основные конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 | ||
В предыдущих уроках - [Первый старт], [Меняем иконку приложения], [Добавляем другую модель] мы ознакомились с первыми шагами, которые нужно выполнить для начала работы с directx в Microsoft Visual Studio 2008 - настроить примеры для корректной компиляции, сменить иконку в собственном проекте и наконец приступить к первым модификациям кода |
||
Задача: вывести значение переменной на экран Реализация: можно поместить на форму метку (label). Если реализовать вывод значения переменной по нажатию на кнопку. При этом возникают следующие вопросы: Как получить доступ к метке label на форме из кода? Сначала решаем так: объявляем переменную, по нажатию на кнопку в ее свойстве Text выводим значение переменной В заголовочном файле Form1.h private:
System::Void button1_Click(System::Object^ sender, System::EventArgs^
e) { код помеченный коричневым был сгенерирован системой, код помеченный зеленым был записан нами результат работы - по нажатию на кнопку на ее поверхности выводится текст: 1 |
||
Функция перевода числа в текст? itow (перевод int в строку Unicode) эквивалент для .Net Framework - System::Convert::ToString private:
System::Void button1_Click(System::Object^ sender, System::EventArgs^
e) { |
||
Показанный выше пример выводит число 0 в виде текста на поверхность кнопки! Теперь можно заняться исследованиями языка C++ |
||
Разработка мини-калькулятора Самый простейший вариант программы это небольшой калькулятор, который бы выполнял основные арифметические операции - сложение, вычитание, умножение, деление должно быть поле для ввода значений и отображения результата, кнопки +, -, *, /, = Работа происходит так: в поле вводится первое число, нажимается кнопка операции, вводится второе число, нажимается = при этом в поле ввода должен появиться результат |
||
Реализация - на форме нужно разместить элементы управления Button (5 шт), в качестве поля ввода TextBox Дать элементам управления более осмысленные имена (свойство Name в панели Properties), например plus_button, minus_button, mult_button, div_button, result_button, EnterFieldtextBox Для свойства Text кнопок установите +, -, *, /, = соответственно |
||
![]() |
||
По нажатию на кнопки - + * / значение текстового поля должно заноситься в переменную первого операнда (x), в специальную переменную должен заноситься код операции (code_op), по нажатию на кнопку = значение текстового поля должно заноситься в переменную второго операнда (y), должен вычисляться результат (res) и выводится в текстовое поле | ||
Для очистки регистров x, y, res и code_op можно добавить специальную кнопку - Clear | ||
Вообще программирование приложения Windows Forms в MSVS 2008 сильно напоминает методы работы в Delphi 7! Я не удержался и удалил кнопку Say Hello. Как поведет себя MSVS ? К сожалению код обработчика мне пришлось удалять вручную. Среда Delphi в этом случае повела бы себя более разумно - во время сохранения изменений когда код обработчика был бы пуст она бы удалила метод обработчика из кода. MSVS 2008 как видим этого не сделала. В этом плане MSVS сильно отличается от Delphi 7. Еще меня удивило, что код модуля формы для обработчиков нажатий кнопок попадает в заголовочный файл формы Form1.h. Возможно это связано с тем, что не вводился специальный тип файла для хранения данных формы. В Delphi 7 для этих целей есть специальный файл *.dfm Похоже, что основные идеи создания приложений Windows Forms в Microsoft пришли из Delphi. Или я ошибаюсь? |
||
в коде класса формы добавляем описание наших переменных статичных полей для формы private: static int x, y, res, code_op; |
||
остальной код (после автоматического добавления обработчиков нажатий на кнопки формы по аналогии с HelloWorldCLR) будет выглядеть так - | ||
private: System::Void plus_button_Click(System::Object^ sender, System::EventArgs^ e) { | ||
|
||
} | ||
private: System::Void clear_button_Click(System::Object^ sender, System::EventArgs^ e) { | ||
|
||
} | ||
private: System::Void result_button_Click(System::Object^ sender, System::EventArgs^ e) { | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
} | ||
private: System::Void minus_button_Click(System::Object^ sender, System::EventArgs^ e) { | ||
|
||
} | ||
private: System::Void mult_button_Click(System::Object^ sender, System::EventArgs^ e) { | ||
|
||
} | ||
private: System::Void div_button_Click(System::Object^ sender, System::EventArgs^ e) { | ||
|
||
} | ||
зеленым помечен код, который Вы должны написать сами | ||
сохраняем, выполняем сборку, проверяем работу нашего калькулятора - | ||
![]() |
||
Щелкаем мышью по текстовому полю, вводим с клавиатуры первое число, нажимаем кнопку операции, снова щелкаем по текстовому полю и вводим второе число, нажимаем знак равно, получаем результат. Кнопка clear приводит к очистке полей формы x, y, res, code_op и записи строкового значения "0" в свойство Text поля ввода EnterFieldtextBox Обратите внимание!!! Т.к. MSVS и язык C++ являются чувствительными к регистру букв (заглавные/строчные), то все имена переменных и других идентификаторов необходимо вводить именно так, как вы их записали во время первого объявления! Т.е. записав в секции объявлений или где-то в коде переменную с именем ReS обращаться к ней нужно именно как ReS, обращения res или Res или даже RES будут восприняты компилятором как обращения к совершенно другой переменной!!!!! Имейте это в виду, если Вы только только начали писать на С++. Поскольку я хорошо знаком с Delphi 7, то я всегда буду сравнивать MSVS именно с ним. Ваш опыт программирования в других языках и средах сформирует в дальнейшем Ваше собственное мнение. |
||
в следующем уроке мы начнем разбор основных конструкций языка C++ | ||
[назад] [далее] [к содержанию] |