LXF87-88:Mono
Yaleks (обсуждение | вклад) (Новая: {{Цикл/Mono}} == Mono: Написать Hello, World! == ''Хотите научиться программировать? Имеете шанс: '''Пол Хадсон''' начин...) |
Yaleks (обсуждение | вклад) м (викификация) |
||
Строка 66: | Строка 66: | ||
поддержало и ваш. Если вы сроду не программировали, то | поддержало и ваш. Если вы сроду не программировали, то | ||
эта серия для вас: я попытаюсь рассказать, как стать профессиональным программистом, и сделаю все, чтобы этот процесс был | эта серия для вас: я попытаюсь рассказать, как стать профессиональным программистом, и сделаю все, чтобы этот процесс был | ||
− | увлекательным и интересным. Мы будем использовать | + | увлекательным и интересным. Мы будем использовать Mono — открытую программную платформу, совместимую с Microsoft .NET. Если |
− | вы никогда о таком не слышали, ничего | + | вы никогда о таком не слышали, ничего страшного — мы рассмотрим |
теорию позже. | теорию позже. | ||
− | На этом уроке мы начнем с установки Mono, разрешим его зависимости и напишем программу Hello World: как вы, возможно, догадались, цель этого | + | На этом уроке мы начнем с установки Mono, разрешим его зависимости и напишем программу Hello World: как вы, возможно, догадались, цель этого проекта — заставить Mono вывести на экран строку |
‘Hello World!’. В качестве базового дистрибутива для этого учебника я | ‘Hello World!’. В качестве базового дистрибутива для этого учебника я | ||
взял Fedora Core 6. Он включает все необходимое, чтобы научиться | взял Fedora Core 6. Он включает все необходимое, чтобы научиться | ||
Строка 80: | Строка 80: | ||
появится окно, выберите режим просмотра в виде Списка (List view). | появится окно, выберите режим просмотра в виде Списка (List view). | ||
Проверьте, что помечены все пакеты, указанные во врезке Пакеты, нужные для установки Mono (см. выше). Некоторые из них уже установлены, но большинство необходимо выбрать самому. Пометив их, нажмите кнопку Apply (Применить), чтобы Fedora скачала последние версии | Проверьте, что помечены все пакеты, указанные во врезке Пакеты, нужные для установки Mono (см. выше). Некоторые из них уже установлены, но большинство необходимо выбрать самому. Пометив их, нажмите кнопку Apply (Применить), чтобы Fedora скачала последние версии | ||
− | этих пакетов и установила | + | этих пакетов и установила их — на это может уйти несколько минут. |
Итак, мы установили Mono, и теперь вы можете получить доступ к | Итак, мы установили Mono, и теперь вы можете получить доступ к | ||
Строка 91: | Строка 91: | ||
для .NET: например, пакет foo-sharp позволяет использовать с Mono | для .NET: например, пакет foo-sharp позволяет использовать с Mono | ||
библиотеку foo. ‘Sharp’ используется потому, что самый популярный | библиотеку foo. ‘Sharp’ используется потому, что самый популярный | ||
− | язык программирования для . | + | язык программирования для .NET — это С#; музыканты читают С# как |
«си-диез», а по-английски это произносится «си-шарп». | «си-диез», а по-английски это произносится «си-шарп». | ||
− | Самый важный установленный | + | Самый важный установленный пакет — MonoDevelop, главная |
среда разработки приложений в Mono. Программы можно набирать и в обычном текстовом редакторе, но зачем заниматься ерундой? В MonoDevelop множество полезных инструментов, которые | среда разработки приложений в Mono. Программы можно набирать и в обычном текстовом редакторе, но зачем заниматься ерундой? В MonoDevelop множество полезных инструментов, которые | ||
сэкономят вашу энергию. Тем более, все эти пакеты уже скачаны и | сэкономят вашу энергию. Тем более, все эти пакеты уже скачаны и | ||
Строка 114: | Строка 114: | ||
программы. | программы. | ||
|Ширина=150px}} | |Ширина=150px}} | ||
− | + | MonoDevelop — интегрированная среда разработки (IDE) для программистов на Mono. Концепция IDE — включить в одно приложение необходимые инструменты, чтобы выполнять больше работы с минимумом | |
трудностей. В MonoDevelop мы будем производить и кодирование, и | трудностей. В MonoDevelop мы будем производить и кодирование, и | ||
− | компиляцию, и | + | компиляцию, и отладку — это мощнейшая среда разработки! Правда, |
− | оборотной стороной её «мощи» является «трудность в | + | оборотной стороной её «мощи» является «трудность в обучении» — на |
первый раз MonoDevelop выглядит немного ошеломляюще, но большую часть функций вы пока можете игнорировать. Я буду объяснять | первый раз MonoDevelop выглядит немного ошеломляюще, но большую часть функций вы пока можете игнорировать. Я буду объяснять | ||
новые возможности по ходу их надобности. | новые возможности по ходу их надобности. | ||
Строка 140: | Строка 140: | ||
Итак, в меню File выберите New Project. При появлении нового окна | Итак, в меню File выберите New Project. При появлении нового окна | ||
выберите в левой панели C#, затем Console Project на правой панели. В разделе Location (Местоположение) назовите проект HelloWorld. | выберите в левой панели C#, затем Console Project на правой панели. В разделе Location (Местоположение) назовите проект HelloWorld. | ||
− | Поместите его в каталог, где будете сохранять свою | + | Поместите его в каталог, где будете сохранять свою работу — я обычно |
− | использую каталог sandbox [англ. «ящик с | + | использую каталог sandbox [англ. «ящик с песком» — на таких проигрывают тактику военных операций, — прим. ред.], но вы вольны выбирать сами. Убедитесь, что не выбран пункт Create Separate Solution |
Subdirectory, и все: нажмите New, и MonoDevelop создаст скелет | Subdirectory, и все: нажмите New, и MonoDevelop создаст скелет | ||
проекта. | проекта. | ||
Строка 147: | Строка 147: | ||
Несколько секунд жужжания жесткого диска, и MonoDevelop | Несколько секунд жужжания жесткого диска, и MonoDevelop | ||
оживает: слева вы увидите несколько файлов (включая Main.cs и | оживает: слева вы увидите несколько файлов (включая Main.cs и | ||
− | AssemblyInfo.cs), а | + | AssemblyInfo.cs), а справа — код. Пока не обращайте на него внимания: |
нажмите F5. Для MonoDevelop это значит, что вы хотите запустить программу; он тут же компилирует код и запускает его. | нажмите F5. Для MonoDevelop это значит, что вы хотите запустить программу; он тут же компилирует код и запускает его. | ||
Строка 174: | Строка 174: | ||
Первая строка начинается с двух слэшей (//), они означают, что строка | Первая строка начинается с двух слэшей (//), они означают, что строка | ||
является комментарием. Преобразуя исходный код в нечто исполнимое | является комментарием. Преобразуя исходный код в нечто исполнимое | ||
− | компьютером (именно это и называется «компиляцией»), Mono удаляет все комментарии. Напишите в программе хоть тысячу строк | + | компьютером (именно это и называется «компиляцией»), Mono удаляет все комментарии. Напишите в программе хоть тысячу строк комментариев — они никак не повлияют на скорость ее исполнения, потому |
что компилятором просто игнорируются. Комментарии полезны лично | что компилятором просто игнорируются. Комментарии полезны лично | ||
нам: с их помощью мы поясняем, как работает программа или почему | нам: с их помощью мы поясняем, как работает программа или почему | ||
− | мы написали именно так. Этот комментарий MonoDevelop вставил автоматически, чтобы пометить, когда был создан | + | мы написали именно так. Этот комментарий MonoDevelop вставил автоматически, чтобы пометить, когда был создан проект — проку от него |
мало, поэтому можете удалить эту строку, если хотите. | мало, поэтому можете удалить эту строку, если хотите. | ||
Строка 186: | Строка 186: | ||
образом загрузить ее. | образом загрузить ее. | ||
− | + | System — это пространство имен, включающее базовые вещи .NET, | |
в том числе возможность выводить на консоль сообщение ‘Hello | в том числе возможность выводить на консоль сообщение ‘Hello | ||
World!’. Не будь строки using System;, строка, начинающаяся с Console. | World!’. Не будь строки using System;, строка, начинающаяся с Console. | ||
Строка 210: | Строка 210: | ||
В коде есть еще четыре открывающих и закрывающих скобки, | В коде есть еще четыре открывающих и закрывающих скобки, | ||
каждая из которых помечает начало и конец соответствующего блока. Компилятору неважно, насколько аккуратно расставлены скобки, | каждая из которых помечает начало и конец соответствующего блока. Компилятору неважно, насколько аккуратно расставлены скобки, | ||
− | однако выравнивание положений открывающей и закрывающей скобок облегчает | + | однако выравнивание положений открывающей и закрывающей скобок облегчает чтение — чтобы найти конец блока, достаточно проследовать по вертикали вниз. Заметим, что после скобок не нужна точка |
с запятой: скобки ничего не делают в коде, а просто представляют | с запятой: скобки ничего не делают в коде, а просто представляют | ||
структуру. | структуру. | ||
Строка 227: | Строка 227: | ||
объектами), и совершать над ними некие операции. Например, если вы | объектами), и совершать над ними некие операции. Например, если вы | ||
пишете игру про гонки, вы создаёте класс Car (Машина), затем создаёте десять объектов этого класса и помещаете их на трассу. У каждой | пишете игру про гонки, вы создаёте класс Car (Машина), затем создаёте десять объектов этого класса и помещаете их на трассу. У каждой | ||
− | машины своя позиция и | + | машины своя позиция и скорость — это данные объекта. Внутри нашего пространства имени находится один класс — MonoDevelop назвал |
его безликим именем MainClass: ведь неизвестно, что мы собрались | его безликим именем MainClass: ведь неизвестно, что мы собрались | ||
запрограммировать. | запрограммировать. | ||
MainClass не содержит собственных данных, но содержит метод | MainClass не содержит собственных данных, но содержит метод | ||
− | Main. | + | Main. Методы — это действия, которые вы хотите заставить объект |
выполнять по вашей команде. Так, в примере с машиной вам понадобятся методы Accelerate [Ускориться], Decelerate [Снизить скорость], | выполнять по вашей команде. Так, в примере с машиной вам понадобятся методы Accelerate [Ускориться], Decelerate [Снизить скорость], | ||
ChangeGear [сменить передачу] и Crash [сломаться]. (Имена не могут | ChangeGear [сменить передачу] и Crash [сломаться]. (Имена не могут | ||
содержать пробелов, но допускают знаки подчеркивания). Эти методы | содержать пробелов, но допускают знаки подчеркивания). Эти методы | ||
− | заставляют объекты совершать | + | заставляют объекты совершать действия — в случае с Accelerate произойдет увеличение скорости машины. |
Метод Main выглядит довольно коряво, потому что предварен аж | Метод Main выглядит довольно коряво, потому что предварен аж | ||
Строка 242: | Строка 242: | ||
покое. Кроме того, в скобках метода Main стоит string[] args, нагоняя | покое. Кроме того, в скобках метода Main стоит string[] args, нагоняя | ||
еще больше страху. Но этим мы тоже займемся попозже. Надеюсь, вы | еще больше страху. Но этим мы тоже займемся попозже. Надеюсь, вы | ||
− | заметили открывающую скобку на следующей | + | заметили открывающую скобку на следующей строчке — она отмечает |
начало метода. | начало метода. | ||
− | Последняя заслуживающая внимания | + | Последняя заслуживающая внимания строка — Console.WriteLine. |
− | + | Console — это объект, который представляет консоль, в которой работает наша программа и куда направится весь вывод. WriteLine — метод | |
этого объекта, выводящий текст на консоль. Чтобы вызвать WriteLine | этого объекта, выводящий текст на консоль. Чтобы вызвать WriteLine | ||
− | ( | + | («вызвать» — то есть исполнить код), мы просто передаем ему строку |
текста, заключенную в кавычки, например так: | текста, заключенную в кавычки, например так: | ||
<source lang="csharp">Console.WriteLine("Hello World!");</source> | <source lang="csharp">Console.WriteLine("Hello World!");</source> | ||
− | + | Скобки — (и) — используются, чтобы сообщить Mono, что мы вызываем метод WriteLine; без них он не будет знать, что делать. | |
Всего 13 строк кода, а сколько объяснений! Зато вы уже впитали | Всего 13 строк кода, а сколько объяснений! Зато вы уже впитали | ||
Строка 264: | Строка 264: | ||
Попытавшись набрать этот текст в MonoDevelop, вы увидите, что | Попытавшись набрать этот текст в MonoDevelop, вы увидите, что | ||
MonoDevelop выделяет текст красным цветом. Точнее, вы увидите, | MonoDevelop выделяет текст красным цветом. Точнее, вы увидите, | ||
− | что Затем Эффи сказал выделено красным цветом, затем Я | + | что Затем Эффи сказал выделено красным цветом, затем Я зануда — черное, а затем, и вправду так и думал. выделено опять красным. |
Подумайте: если в Mono кавычки помечают начало и конец текста, то | Подумайте: если в Mono кавычки помечают начало и конец текста, то | ||
как он сможет уловить разницу между кавычкой, которую вы хотите | как он сможет уловить разницу между кавычкой, которую вы хотите | ||
вывести, и кавычкой, означающей конец текста? Да никак. Поэтому он | вывести, и кавычкой, означающей конец текста? Да никак. Поэтому он | ||
− | сочтет, что выводимая строка | + | сочтет, что выводимая строка текста — ’Затем Эффи сказал’, а следующая часть, ‘Я зануда’, — уже код C#. Mono это не понравится. |
Если вы хотите включить кавычки в ваш текст, предупредите | Если вы хотите включить кавычки в ваш текст, предупредите | ||
Строка 300: | Строка 300: | ||
Взгляните на часть string args[] в методе Main. Каждое определение метода должно заканчиваться открывающей и закрывающей | Взгляните на часть string args[] в методе Main. Каждое определение метода должно заканчиваться открывающей и закрывающей | ||
круглой скобкой. Между этими скобками мы можем определить, какие | круглой скобкой. Между этими скобками мы можем определить, какие | ||
− | + | данные — если надо — мы будем передавать методу. Вспомним пример | |
с машиной: как метод ChangeGear узнает, на какую передачу надо переключиться? Ответ очевиден: указать ему номер передачи. Вот это и есть | с машиной: как метод ChangeGear узнает, на какую передачу надо переключиться? Ответ очевиден: указать ему номер передачи. Вот это и есть | ||
параметр. Мы определяем параметры, которые должен получать наш | параметр. Мы определяем параметры, которые должен получать наш | ||
Строка 312: | Строка 312: | ||
скобки). Строкой называется просто текст: любая последовательность | скобки). Строкой называется просто текст: любая последовательность | ||
символов, начинающаяся и заканчивающаяся символом двойной | символов, начинающаяся и заканчивающаяся символом двойной | ||
− | кавычки. То есть | + | кавычки. То есть «Hello World!» — это строка. Массив — это группа объектов одного типа, а значит, параметр args может быть пустым, может |
− | содержать одну строку или 100 | + | содержать одну строку или 100 строк — все зависит того, что передается в метод при его вызове. |
Если вы программируете впервые, то, возможно, не поняли того, | Если вы программируете впервые, то, возможно, не поняли того, | ||
что я сказал, поэтому я очерчу проблему: где мы в действительности | что я сказал, поэтому я очерчу проблему: где мы в действительности | ||
вызываем метод Main? Ответ: мы его НЕ вызываем! Однако же ‘Hello | вызываем метод Main? Ответ: мы его НЕ вызываем! Однако же ‘Hello | ||
− | World!’ выводится на экран? Дело в том, что метод | + | World!’ выводится на экран? Дело в том, что метод ‘Main’ — особый |
метод. Когда запускается наша программа, Mono автоматически ищет | метод. Когда запускается наша программа, Mono автоматически ищет | ||
и вызывает метод Main, а также передает ему параметры командной | и вызывает метод Main, а также передает ему параметры командной | ||
Строка 341: | Строка 341: | ||
|Ширина=200px}} | |Ширина=200px}} | ||
Создайте новый проект (выберите File > New Project > C# > Console | Создайте новый проект (выберите File > New Project > C# > Console | ||
− | Project и уберите там дурацкую галочку) и назовите его | + | Project и уберите там дурацкую галочку) и назовите его «ParamPrint». |
Программа будет принимать один входной параметр командной строки | Программа будет принимать один входной параметр командной строки | ||
и выводить его вместе со строкой ‘Hello World!’. | и выводить его вместе со строкой ‘Hello World!’. | ||
Строка 348: | Строка 348: | ||
WriteLine на следующую строку: | WriteLine на следующую строку: | ||
<source lang="csharp">Console.WriteLine("Hello World: " + args[0]);</source> | <source lang="csharp">Console.WriteLine("Hello World: " + args[0]);</source> | ||
− | Так как переменная | + | Так как переменная args — это массив строк, то необходимо сообщить C#, который элемент массива мы хотим вывести. Элементы массива нумеруются, начиная с 0, который обозначает первый элемент, 1 — второй элемент и т. д.; чтобы напечатать первый переданный параметр, |
необходимо написать args[0]. Знак + нужен для соединения строки | необходимо написать args[0]. Знак + нужен для соединения строки | ||
− | + | «Hello World!» и первого параметра. | |
{{Врезка | {{Врезка | ||
Строка 362: | Строка 362: | ||
Если вы теперь нажмете F5, то увидите нечто страшное: вместо вывода сообщения, как в предыдущем примере, приложение | Если вы теперь нажмете F5, то увидите нечто страшное: вместо вывода сообщения, как в предыдущем примере, приложение | ||
MonoDevelop выдаст что-то вроде ‘Unhandled exception: System.Index OutOfRangeException’ [Необработанное исключение: Выход за границы массива]. Так получилось потому, что args[0] ссылается на первый передаваемый в программу параметр, а в действительности мы | MonoDevelop выдаст что-то вроде ‘Unhandled exception: System.Index OutOfRangeException’ [Необработанное исключение: Выход за границы массива]. Так получилось потому, что args[0] ссылается на первый передаваемый в программу параметр, а в действительности мы | ||
− | его не | + | его не передаем — ведь MonoDevelop просто запустил программу без |
параметров. | параметров. | ||
Строка 378: | Строка 378: | ||
на экран выведется только ‘Hello World: Linux’. Строка не выведется | на экран выведется только ‘Hello World: Linux’. Строка не выведется | ||
целиком, так как каждый параметр считается отдельной строкой в массиве args, а параметры разделяются пробелом. В приведенном выше | целиком, так как каждый параметр считается отдельной строкой в массиве args, а параметры разделяются пробелом. В приведенном выше | ||
− | примере | + | примере Linux — это args[0], а Format — это args[1]. Если хотите вывести |
всю строку, то наберите команду вот так: | всю строку, то наберите команду вот так: | ||
<source lang="bash">mono ParamPrint.exe "Linux Format"</source> | <source lang="bash">mono ParamPrint.exe "Linux Format"</source> | ||
Кавычки сообщают Bash (это программа-оболочка), что Linux | Кавычки сообщают Bash (это программа-оболочка), что Linux | ||
− | + | Format — это один параметр. | |
=== Пока все хорошо === | === Пока все хорошо === | ||
На этом уроке было дано введение в MonoDevelop, вы узнали о пространствах имен и методах, какова структура кода C# и как выводить | На этом уроке было дано введение в MonoDevelop, вы узнали о пространствах имен и методах, какова структура кода C# и как выводить | ||
сообщения на экран. Также мы затронули объектно-ориентированное | сообщения на экран. Также мы затронули объектно-ориентированное | ||
− | программирование, довольно сложный для изучения вопрос. Но | + | программирование, довольно сложный для изучения вопрос. Но главное — вы написали первую программу. Она не делает ничего полезного, |
но научила вас, как приступить к программированию. В следующий раз | но научила вас, как приступить к программированию. В следующий раз | ||
мы рассмотрим задачи посерьезнее, тогда-то и начнется веселье. | мы рассмотрим задачи посерьезнее, тогда-то и начнется веселье. |
Версия 22:25, 30 ноября 2008
|
|
|
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Содержание |
Mono: Написать Hello, World!
Хотите научиться программировать? Имеете шанс: Пол Хадсон начинает новую серию руководств по Mono, C# и .NET. На этом уроке: первая программка.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
На программировании держится мой мир, и я хочу, чтобы оно поддержало и ваш. Если вы сроду не программировали, то эта серия для вас: я попытаюсь рассказать, как стать профессиональным программистом, и сделаю все, чтобы этот процесс был увлекательным и интересным. Мы будем использовать Mono — открытую программную платформу, совместимую с Microsoft .NET. Если вы никогда о таком не слышали, ничего страшного — мы рассмотрим теорию позже.
На этом уроке мы начнем с установки Mono, разрешим его зависимости и напишем программу Hello World: как вы, возможно, догадались, цель этого проекта — заставить Mono вывести на экран строку ‘Hello World!’. В качестве базового дистрибутива для этого учебника я взял Fedora Core 6. Он включает все необходимое, чтобы научиться программировать в Mono, и если вы используете ту же версию, то можете в точности следовать моим инструкциям; если нет, то можете посмотреть врезку В помощь Fedora-ненавистникам.
В FC6 большая часть работы уже проделана за вас, но чтобы получить от этого учебника все, необходимо добавить несколько дополнительных пакетов. Выберите пункт Add/Remove Software (Добавить/Удалить Программы) из меню Applications (Приложения), а когда появится окно, выберите режим просмотра в виде Списка (List view). Проверьте, что помечены все пакеты, указанные во врезке Пакеты, нужные для установки Mono (см. выше). Некоторые из них уже установлены, но большинство необходимо выбрать самому. Пометив их, нажмите кнопку Apply (Применить), чтобы Fedora скачала последние версии этих пакетов и установила их — на это может уйти несколько минут.
Итак, мы установили Mono, и теперь вы можете получить доступ к разным частям системы. Возможно, на наших уроках пригодится лишь небольшое подмножество этих пакетов, зато потом вы сможете приняться за задачи по своему вкусу. В список включен Evolution-sharp для доступа к почте и календарю Evolution; gecko-sharp, для встраивания в ваши приложения web-браузера Gecko/Mozilla; ipod-sharp для написания программ доступа к iPod.
Суффикс ‘sharp’ означает, что данная библиотека предназначена для .NET: например, пакет foo-sharp позволяет использовать с Mono библиотеку foo. ‘Sharp’ используется потому, что самый популярный язык программирования для .NET — это С#; музыканты читают С# как «си-диез», а по-английски это произносится «си-шарп».
Самый важный установленный пакет — MonoDevelop, главная среда разработки приложений в Mono. Программы можно набирать и в обычном текстовом редакторе, но зачем заниматься ерундой? В MonoDevelop множество полезных инструментов, которые сэкономят вашу энергию. Тем более, все эти пакеты уже скачаны и установлены, а Fedora добавила в меню специальный пункт запуска MonoDevelop: выберите Applications (Приложения), затем Programming (Программирование), и щелкните по ярлыку MonoDevelop.
Все об интеграции
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
MonoDevelop — интегрированная среда разработки (IDE) для программистов на Mono. Концепция IDE — включить в одно приложение необходимые инструменты, чтобы выполнять больше работы с минимумом трудностей. В MonoDevelop мы будем производить и кодирование, и компиляцию, и отладку — это мощнейшая среда разработки! Правда, оборотной стороной её «мощи» является «трудность в обучении» — на первый раз MonoDevelop выглядит немного ошеломляюще, но большую часть функций вы пока можете игнорировать. Я буду объяснять новые возможности по ходу их надобности.
Займемся нашим первым проектом: Hello World. Это простая задача, и она даст нам прочную основу для дальнейшей разработки других программ.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Итак, в меню File выберите New Project. При появлении нового окна выберите в левой панели C#, затем Console Project на правой панели. В разделе Location (Местоположение) назовите проект HelloWorld. Поместите его в каталог, где будете сохранять свою работу — я обычно использую каталог sandbox [англ. «ящик с песком» — на таких проигрывают тактику военных операций, — прим. ред.], но вы вольны выбирать сами. Убедитесь, что не выбран пункт Create Separate Solution Subdirectory, и все: нажмите New, и MonoDevelop создаст скелет проекта.
Несколько секунд жужжания жесткого диска, и MonoDevelop оживает: слева вы увидите несколько файлов (включая Main.cs и AssemblyInfo.cs), а справа — код. Пока не обращайте на него внимания: нажмите F5. Для MonoDevelop это значит, что вы хотите запустить программу; он тут же компилирует код и запускает его.
Под панелью с кодом написано ‘Application Output’ (Вывод приложения), и после нажатия F5 на экране появится надпись ‘Hello World!’. Миссия выполнена! Ну, не шибко-то радуйтесь: я немного слукавил. MonoDevelop поставляется с уже готовым проектом Hello World!, а на самом деле мы ничего не кодировали. Зато код проекта можно редактировать; вот и попробуем. MonoDevelop сгенерировал 13 строчек кода, из которых только 5 представляют интерес. Вот что у нас есть:
// project created on 11/15/2006 at 1:59 PM using System; namespace HelloWorld { class MainClass { public static void Main(string[] args) { Console.WriteLine("Hello World!"); } } }
Разбираем программу
Первая строка начинается с двух слэшей (//), они означают, что строка является комментарием. Преобразуя исходный код в нечто исполнимое компьютером (именно это и называется «компиляцией»), Mono удаляет все комментарии. Напишите в программе хоть тысячу строк комментариев — они никак не повлияют на скорость ее исполнения, потому что компилятором просто игнорируются. Комментарии полезны лично нам: с их помощью мы поясняем, как работает программа или почему мы написали именно так. Этот комментарий MonoDevelop вставил автоматически, чтобы пометить, когда был создан проект — проку от него мало, поэтому можете удалить эту строку, если хотите.
Следующие две строки касаются первой части нашей теории: пространств имен. Платформа .NET велика. Очень велика! Здесь умещаются библиотеки для работы с XML, графикой, сетью, пользовательским интерфейсом, файлами, безопасностью… и пр. На свете есть тысячи библиотек разработчиков, которые вы можете скачать и включить в собственный код. Каждая из них дает своим компонентам свои собственные имена, поэтому если загрузить их одновременно, то возможности именования в вашей программе будут серьезно ограничены. C# решает эту проблему с помощью пространств имен: каждая библиотека находится где-то в иерархии .NET, куда вам необходимо явным образом загрузить ее.
System — это пространство имен, включающее базовые вещи .NET, в том числе возможность выводить на консоль сообщение ‘Hello World!’. Не будь строки using System;, строка, начинающаяся с Console. WriteLine, не сработала бы: Mono не знал бы, где искать ‘Console’. Нам пришлось бы явно указать, что мы имели в виду Console из библиотеки System, изменив строку на следующую: System.Console.WriteLine. Написав using System;, мы просто сокращаем работу по набору кода. Заметим, что строка кода заканчивается точкой с запятой: для Mono это признак окончания строки.
После строки с using мы определяем свое собственное пространство имен: HelloWorld. И снова, это гарантирует, что наш новый код не будет конфликтовать с наличным кодом Mono. Если имена в ваших проектах сугубо экзотические, без пространств имен можно обойтись, но все же рекомендую оставить эту строку.
Сразу после объявления пространства имен следует открывающая фигурная скобка ({). Вообще-то в коде полно { и }, поэтому вы, вероятно, хотите узнать, зачем они нужны. В C# фигурные скобки используются как метки начала и конца блока кода. В приведенном выше примере, открывающая фигурная скобка сразу после namespace HelloWorld говорит «пространство имен начинается здесь». В конце кода находится закрывающая скобка, означающая, что «пространство HelloWorld заканчивается здесь». Все, что находится между открывающей и закрывающей скобкой, является частью пространства имен HelloWorld.
В коде есть еще четыре открывающих и закрывающих скобки, каждая из которых помечает начало и конец соответствующего блока. Компилятору неважно, насколько аккуратно расставлены скобки, однако выравнивание положений открывающей и закрывающей скобок облегчает чтение — чтобы найти конец блока, достаточно проследовать по вертикали вниз. Заметим, что после скобок не нужна точка с запятой: скобки ничего не делают в коде, а просто представляют структуру.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
С# реализует концепции объектно-ориентированного программирования, то есть в коде можно определить сущности (называемые классами), затем создать экземпляры этих сущностей (называемые объектами), и совершать над ними некие операции. Например, если вы пишете игру про гонки, вы создаёте класс Car (Машина), затем создаёте десять объектов этого класса и помещаете их на трассу. У каждой машины своя позиция и скорость — это данные объекта. Внутри нашего пространства имени находится один класс — MonoDevelop назвал его безликим именем MainClass: ведь неизвестно, что мы собрались запрограммировать.
MainClass не содержит собственных данных, но содержит метод Main. Методы — это действия, которые вы хотите заставить объект выполнять по вашей команде. Так, в примере с машиной вам понадобятся методы Accelerate [Ускориться], Decelerate [Снизить скорость], ChangeGear [сменить передачу] и Crash [сломаться]. (Имена не могут содержать пробелов, но допускают знаки подчеркивания). Эти методы заставляют объекты совершать действия — в случае с Accelerate произойдет увеличение скорости машины.
Метод Main выглядит довольно коряво, потому что предварен аж тремя ключевыми словами: public, static и void. Пока оставим их в покое. Кроме того, в скобках метода Main стоит string[] args, нагоняя еще больше страху. Но этим мы тоже займемся попозже. Надеюсь, вы заметили открывающую скобку на следующей строчке — она отмечает начало метода.
Последняя заслуживающая внимания строка — Console.WriteLine. Console — это объект, который представляет консоль, в которой работает наша программа и куда направится весь вывод. WriteLine — метод этого объекта, выводящий текст на консоль. Чтобы вызвать WriteLine («вызвать» — то есть исполнить код), мы просто передаем ему строку текста, заключенную в кавычки, например так:
Console.WriteLine("Hello World!");
Скобки — (и) — используются, чтобы сообщить Mono, что мы вызываем метод WriteLine; без них он не будет знать, что делать.
Всего 13 строк кода, а сколько объяснений! Зато вы уже впитали довольно много теории.
Изучаем возможности WriteLine()
Текст ‘Hello World!’ не особо нов, но внутри кавычек можно поместить любую другую строку для вывода (не забывайте нажимать F5, что-бы MonoDevelop перекомпилировал и выполнил ваш код). Любой-то любой, но есть одно исключение, если в тексте имеются кавычки:
Console.WriteLine("Затем Эффи сказал "Я зануда", и вправду так и думал.");
Попытавшись набрать этот текст в MonoDevelop, вы увидите, что MonoDevelop выделяет текст красным цветом. Точнее, вы увидите, что Затем Эффи сказал выделено красным цветом, затем Я зануда — черное, а затем, и вправду так и думал. выделено опять красным. Подумайте: если в Mono кавычки помечают начало и конец текста, то как он сможет уловить разницу между кавычкой, которую вы хотите вывести, и кавычкой, означающей конец текста? Да никак. Поэтому он сочтет, что выводимая строка текста — ’Затем Эффи сказал’, а следующая часть, ‘Я зануда’, — уже код C#. Mono это не понравится.
Если вы хотите включить кавычки в ваш текст, предупредите Mono, что кавычку надо вывести, а не считать её концом текста. В C# это можно сделать с помощью специального модификатора [escape character]: \. Модификатор сообщает C#, что следующий за ним символ интерпретируется особым образом. Если вы хотите вывести кавычки, необходимо поместить перед кавычкой модификатор:
Console.WriteLine("Затем Эффи сказал, \"Я зануда!\", и вправду так и думал.");
Другими модификаторами являются \n, означающий «начало следующей строки»; и \\, означающий «вывод обратного слэша» (то есть знак \ выводится, а не считается модификатором). Вообще-то модификатор \n не так уж и нужен, потому что метод WriteLine автоматически добавляет символ новой строки в конец каждой выводимой строки. Например, если бы вы изменили код на следующий:
Console.WriteLine("Фонарный столб он кулаком "); Console.WriteLine("Ударил что есть сил,"); Console.WriteLine("И гордо заявил потом,"); Console.WriteLine("Что призрака сразил.");
то на каждой строке напечаталось бы по одной строке текста. Управлять переносом строки самостоятельно позволяет метод Console.Write, например, так:
Console.WriteLine("Фонарный столб он кулаком "\n); Console.WriteLine("Ударил что есть сил,"\n); Console.WriteLine("И гордо заявил потом,"\n); Console.WriteLine("Что призрака сразил."\n);
Параметр номер 0
Взгляните на часть string args[] в методе Main. Каждое определение метода должно заканчиваться открывающей и закрывающей круглой скобкой. Между этими скобками мы можем определить, какие данные — если надо — мы будем передавать методу. Вспомним пример с машиной: как метод ChangeGear узнает, на какую передачу надо переключиться? Ответ очевиден: указать ему номер передачи. Вот это и есть параметр. Мы определяем параметры, которые должен получать наш метод, а C# проверяет, что при вызове метода использованы правильные данные. У каждого параметра есть тип и имя, по которому к нему будет происходить обращение в методе.
В случае с string args[] наш код утверждает три вещи: методу Main будет передан строго один параметр; доступ к нему из метода Main будет осуществлен через имя args; это будет массив строк (массив обозначается символом [], открывающая и закрывающая квадратные скобки). Строкой называется просто текст: любая последовательность символов, начинающаяся и заканчивающаяся символом двойной кавычки. То есть «Hello World!» — это строка. Массив — это группа объектов одного типа, а значит, параметр args может быть пустым, может содержать одну строку или 100 строк — все зависит того, что передается в метод при его вызове.
Если вы программируете впервые, то, возможно, не поняли того, что я сказал, поэтому я очерчу проблему: где мы в действительности вызываем метод Main? Ответ: мы его НЕ вызываем! Однако же ‘Hello World!’ выводится на экран? Дело в том, что метод ‘Main’ — особый метод. Когда запускается наша программа, Mono автоматически ищет и вызывает метод Main, а также передает ему параметры командной строки. Мы привыкли набирать cd /usr/bin, чтобы сменить каталог; /usr/bin является параметром команды cd. Когда Mono вызывает метод Main, он посылает эти параметры в виде массива строк args, а это значит, что мы можем сделать нашу первую полезную программу: ввод данных пользователем для их дальнейшего применения.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Создайте новый проект (выберите File > New Project > C# > Console Project и уберите там дурацкую галочку) и назовите его «ParamPrint». Программа будет принимать один входной параметр командной строки и выводить его вместе со строкой ‘Hello World!’.
В новом коде, который сгенерирует MonoDevelop, измените Console. WriteLine на следующую строку:
Console.WriteLine("Hello World: " + args[0]);
Так как переменная args — это массив строк, то необходимо сообщить C#, который элемент массива мы хотим вывести. Элементы массива нумеруются, начиная с 0, который обозначает первый элемент, 1 — второй элемент и т. д.; чтобы напечатать первый переданный параметр, необходимо написать args[0]. Знак + нужен для соединения строки «Hello World!» и первого параметра.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Если вы теперь нажмете F5, то увидите нечто страшное: вместо вывода сообщения, как в предыдущем примере, приложение MonoDevelop выдаст что-то вроде ‘Unhandled exception: System.Index OutOfRangeException’ [Необработанное исключение: Выход за границы массива]. Так получилось потому, что args[0] ссылается на первый передаваемый в программу параметр, а в действительности мы его не передаем — ведь MonoDevelop просто запустил программу без параметров.
Решение состоит в том, чтобы открыть терминал и задать программе параметры вручную. В меню Applications (Приложения), выберите Accessories (Дополнительные), затем Terminal (Терминал). Теперь измените каталог на тот, в котором находится ваш проект. Внутри каталога вы увидите каталог bin, а также каталог Debug, куда MonoDevelop помещает исполняемые файлы, когда мы работаем над проектом. Внутри этого каталога будет находится ваша программа: ParamPrint. exe. Чтобы запустить ее, наберите команду:
mono ParamPrint.exe
Вы увидите то же сообщение об ошибке на консоли; а теперь попробуйте добавить параметр:
mono ParamPrint.exe LXF
На экран выведется ‘Hello World: LXF’. А если вы попробуете
mono ParamPrint.exe Linux Format
на экран выведется только ‘Hello World: Linux’. Строка не выведется целиком, так как каждый параметр считается отдельной строкой в массиве args, а параметры разделяются пробелом. В приведенном выше примере Linux — это args[0], а Format — это args[1]. Если хотите вывести всю строку, то наберите команду вот так:
mono ParamPrint.exe "Linux Format"
Кавычки сообщают Bash (это программа-оболочка), что Linux Format — это один параметр.
Пока все хорошо
На этом уроке было дано введение в MonoDevelop, вы узнали о пространствах имен и методах, какова структура кода C# и как выводить сообщения на экран. Также мы затронули объектно-ориентированное программирование, довольно сложный для изучения вопрос. Но главное — вы написали первую программу. Она не делает ничего полезного, но научила вас, как приступить к программированию. В следующий раз мы рассмотрим задачи посерьезнее, тогда-то и начнется веселье.