Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование с нуля - это совсем просто! N 6. Завершаем музыкальный плеер в Visual Studio


Информационный Канал Subscribe.Ru

 
Школа программирования

Программирование с нуля - это совсем просто!

6) Завершаем музыкальный плеер в Visual Studio.

Для только что присоединившихся напоминаю темы первых выпусков:

Вводная. Читать желательно.
Программы делают программы. Читать обязательно!
Мифы о сложности программирования. Части 1 и 2. На ваше усмотрение.
Делаем первую программу - музыкальный проигрыватель.Читать обязательно!
Делаем первую программу - музыкальный проигрыватель. Финал в Delphi.Читать обязательно!
Ответы на письма, из сочинений. На ваше усмотрение.

Там где написано "Читать обязательно!", имеется в виду конечно "ДЕЛАТЬ обязательно!".

Все эти выпуски можно найти здесь: http://russianenterprisesolutions.com/sbo/base.htm

Спрашивают вот, совершенно справедливо:

Я подписался на ваш курс программирования, мне первое занятие пришло такое: 5) Делаем первую программу - музыкальный проигрыватель.
Я что-то пропустил или как, а то что-то непонятно мне.(у вас сказано "Программирование с нуля - это совсем просто!")

И еще:

Сколько пустой болтовни... где же учёба?

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


Также немного подкорректирован способ правильного выполнения заданий:

1) Задания выполняются последовательно, начиная с первого, без пропусков.
2) Задание выполняется в течение одного-двух дней после получения рассылки с очередным практическим занятием.
Выполняется как практическая часть по программированию, так и по развитию способностей. Обязательно!
3) По результату занятия (независимо от его успешности или неуспешности) составляется отчет и присылается мне.
В отчете вы сами ставите себе оценку за выполненное вами упражнение.


Обмен дружественными рассылками.

Неисследованные уголки Интернета

http://subscribe.ru/catalog/inet.review.ugolkiineta

Обзоры интересных, но малоизвестных ресурсов Сети. Каждая ссылка уникальна своей тематикой. За меньшее время вы получите больше информации.


Теперь от программирования в Delphi (тут был язык программирования - Паскаль, вы разве не заметили? :) переходим к другим - Бейсику и Си/Си++. Для этого нам понадобится Visual Studio .NET 2003, о которой я уже говорил. Она по идеологии напоминает Delphi, поэтому сложностей с ее освоением не возникнет.

Не знаю точно, насколько будет совместимость со старыми версиями Visual Studio (Си++ точно не будет к сожалению, с Visual Basic сами проверяйте). Если считаете, что вам пока достаточно Delphi, то это занятие можете пропустить, или выполнить, не напрягаясь. Выйдет с ходу - хорошо, нет - тоже неплохо. С оболочкой познакомитесь :)

В начальном окне Visual Studio обычно проект по умолчанию, как в Delphi, не открывается. Это надо своими руками делать. Ну давайте начнем с разработки на Си++, самый популярный в мире язык среди профессиональных программистов, как любят модные аналитические фирмы говорить. При устройстве на работу спрашивают прежде всего знание Си++, а потом уже все остальное. Так что через полчаса вы сможете всем совершенно искренне рассказывать: "а я на си плюс плюс музыкальный редактор намедни делал". Некоторые еще любят говорить на английский манер "си плас плас". Это совсем круто прозвучит :)

Итак, запускаете Visual Studio .NET, даете команду главного меню File > New > Project (создать новый проект то бишь), и возникает вот такое хитроумное окно:

http://russianenterprisesolutions.com/sbo/im/17.gif

С его помощью можно открывать проекты на самых разных языках и для самых разных нужд. Ну мы еще до этого всего доберемся. Нам нужен раздел Visual C++ Projects, а в нем подраздел .NET. В правой части покажутся все доступные варианты такого раздела, выберите значок Windows Forms Application .NET (Приложение для платформы .NET - это такое усовершенствование Windows). В поле Name (название вашего проекта) укажите желаемое название (лучше английскими буквами), в поле Location - локацию :) , местонахождение проекта со всеми его файлами.

http://russianenterprisesolutions.com/sbo/im/18.gif

Теперь нажимаете ОК, и проект создан. Вот как теперь окно Visual Studio может выглядеть:

http://russianenterprisesolutions.com/sbo/im/19.gif

Оно на самом деле похоже на окно Delphi, только разные локальные окошки тут по разному размещены. В центре - знакомый вам дизайнер форм. Палитра компонентов (тут она называется панель инструментов, Toolbox) расположена слева. Видите там знакомую строчку Label? Вот-вот, это именно то, что вы подумали.

В правой части вверху - инспектор объектов. Здесь он называется окно свойств (Properties). Под ним - проводник решения (Solution Explorer), или, попроще - менеджер проекта, показывающий входящие в проект файлы и взаимосвязи между ними. На самом деле и в Delphi такой есть, только я вам пока не говорил :)

Вот и в Visual Studio закройте его пока, если хотите.

Начнем создание плеера с конца. Сначала на форме разместим картинку. Для этого предназначен компонент PictureBox, в Delphi он назывался Image. Установите его на форму, а файл с рисунком задается через его свойство Image. В окне свойств в этом свойстве Image тоже есть кнопочка с тремя точками, вот с ее помощью нужный файл с фоновым рисунком и надо указать. Только явного свойства авторазмера в Visual Studio нету, а есть более общее SizeMode (режим задания размера объекта). В выпадающем списочке его значений есть такое значение AutoSize, вот его и надо взять. А после этого размер формы подгоните под размер картинки.

http://russianenterprisesolutions.com/sbo/im/31.jpg

Теперь очередь за компонентом наподобие медиаплеера - в Delphi был такой MediaPlayer, помните? Увы, в Visual Studio такого компонента нету. По крайней мере, нету явно доступного на панели инструментов. Но если у вас в Windows установлен стандартный проигрыватель Microsoft Windows Media (по умолчанию он всегда ставится), то мы можем тайком воспользоваться его функциями. Для этого в Windows уже встроены соответствующие возможности на системном уровне, только до них добраться надо. Собственно, MediaPlayer из Delphi представляет собой такую системную функцию (системный компонент) Windows, "обернутый" особым кодом специально для Delphi. То есть создатели Delphi о нас позаботились. А вот создатели Visual Studio - нет :)

Но мы и без них справимся, правда? Наведите мышку на любую область панели инструментов (слева которая) и нажмите правую клавишу. В локальном меню выберите пункт Add/Remove Items (Добавить/удалить элементы). Там будет закладочка COM Components (это список системных компонентов Windows, которые на вашем компьютере доступны). Прокрутите его и найдите строчку Windows Media Player. Поставьте в ее начале галочку.

http://russianenterprisesolutions.com/sbo/im/30.gif

Теперь нажмите ОК и посмотрите панель инструментов. Она разбита на разделы (как в Delphi), только они не закладками сделаны, а раскрывающимися списками. Нам нужен раздел Windows Forms (раздел стандартных элементов Windows .NET). В нем окажется новая строчка Windows Media Player (раньше ее у вас здесь не было, уверяю!). Если ее в видимой части не видно, то нужно стрелочку вниз пощелкать.

http://russianenterprisesolutions.com/sbo/im/32.gif

Щелкните на этой строчке, а затем на форме в дизайнере. Только сразу этот компонент на форме не появится. В нижней части окна Visual Studio предварительно замелькают строчки типа таких:

------ Build started: Project: MojProekt, Configuration: Debug Win32 ------
Creating AxImp wrapper file...
Generated Assembly: C:\tmp\MojProekt\Debug\AxInterop.MediaPlayer.dll
Build log was saved at "file://c:\tmp\MojProekt\Debug\BuildLog.htm"
MojProekt - 0 error(s), 0 warning(s)
---------------------- Done ----------------------
    Build: 1 succeeded, 0 failed, 0 skipped
Помните, когда в Delphi мы нажимали кнопку Run, и проект преобразовывался в готовую программу, показывалось окошечко с ходом этого процесса? А вот в Visual Studio такое преобразование в нижнем окне отображается. Сейчас автоматически выполнилось преобразование системного объекта Windows Media Player в компонент Visual Studio, доступный в дизайнере. Такая своеобразная "обертка" системной функции - в Delphi она заранее сделана разработчиками, ну а тут достаточно быстро на лету сформировалась.

А когда процесс преобразования завершится, на форме возникнет что-то примерно такое:

http://russianenterprisesolutions.com/sbo/im/33.jpg

Это так Windows Media Player выглядит, целиком :) Его можно сжать до одной строчки с кнопками:

http://russianenterprisesolutions.com/sbo/im/34.jpg

Теперь надо название файла указать, который будет воспроизводиться. Для этого воспользуемся свойством FileName компонента Media Player, оно совпадает по названию со схожим свойством MediaPlayer из Delphi. Правда, в нем нет удобной кнопочки для выбора файла, придется его местоположение вручную записывать:

http://russianenterprisesolutions.com/sbo/im/35.gif

Теперь можно наш проект собрать в готовую программу. В Visual Studio для этого предназначена кнопка Start (с синеньким треугольничком, она в самом центре вверху, справа от нее выпадающий список "Debug..."). Или можно F5 нажать.

Начнется процесс создания приложения. В нижней части много разного текста будет выводиться. А потом ваша программа сама запустится и вы услышите любимую мелодию.

Вот таким нехитрым способом мы изучили возможности программирования Visual C++ :) Теперь самостоятельно изучите Visual Basic :)

Делается это примерно так. Повторите данный проект, - создайте заново (File > New > Project), только теперь не Visual C++ Projects указываете, а раздел Visual Basic Projects. Там будет значок Windows Application. Вот его и выбираете. Так же картиночку в дизайнере добавляете, проигрыватель, все настраиваете и жмете F5. И слушаете :)

Заметили разницу между C++ и Basic-ом? Это хорошо :)

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


Решения на логическое упражнение из четвертого выпуска.
Все, кто попытался решить его, МОЛОДЦЫ! Честное слово. Потому что задача трудная (наглядно показывает, как плохо мы соображаем в достаточно в принципе очевидных вещах :). Вы не думайте, я тоже старался ее решить, но так и не смог :) А вот тот, кто смог, потенциально может стать очень и очень сильным программистом. Те, кто сразу не смог, тоже впрочем :)

Вот несколько типичных ответов.

1) В каком случае шансы на выигрыш больше - 5 из 90 или 85 из 90?
- Шансы на выигрыш, как мне кажется, больше во втором случае, т.к. не учавствуют всего лишь пять шаров, и из числа 85 озвученных, при невыпавших именно этих оставшихся пяти, будут озвученны 80
2) Что труднее:
угадать 4 шара из 5 в варианте А (берется 5 шаров из 90) или 84 из 85 (берется 85 шаров из 90) в варианте Б?
- Труднее угадать 4 шара из пяти в варианте А(5 из 90)
угадать 3 шара в варианте А или 83 в варианте Б?
угадать 2 шара в варианте А или 82 в варианте Б?
- И гораздо сложнее угодать угадать 2 шара в варианте А, т.к. вычислить какие именно шары выпадут из 90 - 2, практически невозможно
Ольга

Еще.

1.Шансов на выигрыш больше в варианте Б, так как предпологается,что в этом случае только 5 шаров невыиграшные,в противном случае задача сама по себе просто бессмыслена.Если же нам надо найти именно эти шары,то она превращается в вариант А.

2.Соответственно,вообщем случае и в том,и в другом случае задача упрощается,так как надо найти меньшее количество нужных нам шаров.Но, во всех случаях,шансов больше в варианте Б.
И,самое главное,необходимо,чтобы был известен диапозон номеров шаров,иначе шансов,хотя и вообще призрачных будет в варианте А.
Константин

Ответы же такие. 85 из 90 или 5 из 90, разницы нету. Угадать 85 выпавших - ведь то же самое, что угадать 5 невыпавших!

83 из 85 из 90 или 3 из 5 из 90 (как и все другие - 82/85 2/5; 84/85 4/5 итд) также равновероятны, как ни удивительно на первый взгляд.

Попробую объяснить. Тоже от инверсии пойдем. Сам долго думал над объяснением :)

Угадать 3 из 5 выпавших.
Допустим, что угадали все 5 из 5 выпавших. Это значит то же, что угадали 85 НЕвыпавших из 85.
Если угадано 3 из 5, то значит что НЕугадано еще 2 шара, так? То есть наш результа ухудшен на 2 единицы.
Инвертируя, получим, что результат 85 НЕвыпавших надо ухудшить на такие же 2 шара. А что значит ухудшить на 2 результат 85 НЕвыпавших? Значит, что получится не 85, а 83 угаданных из 85. Вот и выходит, что 3 из 5, что 83 из 85.

В чем недостаток наших решений? В усложнении! А на самом деле все просто. Что в программировании, что в жизни :)

Подумайте над этим решением еще, может, какое другое очевидное объяснение найдете.

Новые задания в следующем выпуске.


(c) Сергей Бобровский bobrovsky@russianenterprisesolutions.com

Школа программирования с нуля http://russianenterprisesolutions.com/sbo/

Первые выпуски http://russianenterprisesolutions.com/sbo/base.htm

 

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.prognull
Отписаться

В избранное