
- •Минобрнауки россии
- •1. Вводная часть
- •2. Знакомство со средой разработки на примере создания простого консольного приложения
- •3. Модификация консольного приложения
- •4. Публикация
- •5. О приложении к Лабораторной работе № 1
- •2. Лабораторная работа № 2: Создание простого приложения Windows Forms Лабораторная работа № 2: Создание простого приложения Windows Forms
- •1. Вводная часть
- •2. Создание простого приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Завершающая часть
- •5. О приложении к Лабораторной работе № 2
- •3. Лабораторная работа № 3: Windows Forms и использование некоторых элементов управления Лабораторная работа № 3: Windows Forms и использование некоторых элементов управления
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: элемент управления MenuStrip
- •5. Модификация приложения Windows Forms: элемент управления Button
- •6. Модификация приложения Windows Forms: элемент управления ToolTip
- •7. Модификация приложения Windows Forms: элемент управления ComboBox
- •8. Модификация приложения Windows Forms: элемент управления WebBrowser
- •9. Модификация приложения Windows Forms: добавляем исходный код
- •10. Завершающая часть
- •11. О приложение к Лабораторной работе № 3
- •4. Лабораторная работа № 4: Windows Forms — работа с формами Лабораторная работа № 4: Windows Forms — работа с формами
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: добавление новой формы
- •5. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через прямой доступ к элементу формы
- •6. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через передачу метода в конструктор формы
- •7. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через класс делегата
- •8. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через свойства
- •9. Завершающая часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: динамическое добавление и уничтожение элемента управления
- •5. Модификация приложения Windows Forms: стандартные диалоговые окна
- •6. Модификация приложения Windows Forms: открытие файла, сохранение файла и работа с текстом
- •7. Модификация приложения Windows Forms: прочее
- •8. Завершающая часть
- •9. О приложении к Лабораторной работе № 5
- •6. Лабораторная работа № 6: SolidWorks — работа с SolidWorks Лабораторная работа № 6: SolidWorks — работа с SolidWorks
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: eDrawings 2012
- •4. Модификация приложения Windows Forms: организация работы с SolidWorks через приложение
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 6
- •1. Вводная часть
- •2. Создание приложения SwCSharpAddin
- •3. Модификация приложения SwCSharpAddin: макрос отрисовки болта
- •4. Модификация приложения SwCSharpAddin: построение через шаблон детали
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 7
- •8. Лабораторная работа № 8: Создание простого приложения Windows Foundation Presentation Лабораторная работа № 8: Создание простого приложения Windows Foundation Presentation
- •1. Вводная часть
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation
- •4. Модификация приложения Windows Foundation Presentation: добавление нового элемента из библиотеки компонентов wpf
- •5. Модификация приложения Windows Forms: расширение функциональности приложения и работа с оформление
- •6. Модификация приложения Windows Foundation Presentation: различные возможности wpf
- •7. Модификация приложения Windows Foundation Presentation: немного о стилях и шаблонах
- •8. Завершающая часть
- •9. О приложении к Лабораторной работе № 8
- •9. Лабораторная работа № 9: Создание приложения-презентации Windows Foundation Presentation Лабораторная работа № 9: Создание приложения-презентации Windows Foundation Presentation
- •1. Вводная часть
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation
- •4. Модификация приложения Windows Foundation Presentation: работа с решением в Expression Blend
- •5. Завершающая часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: odbc
- •4. Модификация приложения Windows Forms: ole
- •5. Модификация приложения Windows Forms: xml
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 10
- •11. Лабораторная работа № 11: Динамическая связь приложений через библиотеку классов Лабораторная работа № 11: Динамическая связь приложений через библиотеку классов
- •1. Вводная часть
- •2. Удалённый объект: создание библиотеки классов удалённого объекта
- •3. Клиент: создание приложения Windows Forms
- •4. Сервер: создание консольного приложения
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 11
- •12. Лабораторная работа № 12: Автоматизация Microsoft Office Word Лабораторная работа № 12: Автоматизация Microsoft Office Word
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: создание и заполнение нового документа Microsoft Word
- •4. Модификация приложения Windows Forms: работа с шаблонами
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 12
- •13. Лабораторная работа № 13: Автоматизация Microsoft Office Excel Лабораторная работа № 13: Автоматизация Microsoft Office Excel
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: создание и заполнение нового документа Microsoft Excel
- •4. Модификация приложения Windows Forms: чтение данных с документа Microsoft Excel
- •5. Модификация приложения Windows Forms: прочие возможности Microsoft Excel
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 13
- •14. Лабораторная работа № 14: Простой растровый редактор Лабораторная работа № 14: Простой растровый редактор
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: подготовка интерфейса редактора
- •4. Модификация приложения Windows Forms: функциональность растрового редактора
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 14
- •15. Лабораторная работа № 15: Векторный редактор изображений Лабораторная работа № 15: Векторный редактор изображений
- •1. Вводная часть
- •2. Создание решения, приложения Windows Forms и библиотеки классов
- •3. Модификация приложения Windows Forms: подготовка интерфейса редактора и добавление файлов ресурсов
- •4. О будущей функциональности векторного редактора изображений
- •5. Модификация приложения Windows Forms: подготовка библиотеки классов
- •6. Модификация приложения Windows Forms: функциональность векторного редактора
- •7. Завершающая часть
- •8. О приложении к Лабораторной работе № 15
- •16. Лабораторная работа № 16: Windows Communication Foundation Лабораторная работа № 16: Windows Communication Foundation
- •1. Вводная часть
- •2. Создание приложения wcf:
- •3. Модификация приложения wcf: приложение-клиент для wcf-службы
- •4. Создание приложения Windows Forms: сервер чата на wcf
- •5. Создание приложения Windows Forms: клиент чата на wcf
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 16
- •17. Лабораторная работа № 17: Знакомство с Silverlight Лабораторная работа № 17: Знакомство с Silverlight
- •1. Вводная часть
- •2. Создание приложения Silverlight:
- •3. Модификация приложения Silverlight: первые шаги и полноэкранный режим
- •4. Модификация приложения Silverlight: простой проигрыватель mp3-файлов
- •5. Модификация приложения Silverlight: работа с анимацией
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 17
- •18. Лабораторная работа № 18: Знакомство с asp.Net Лабораторная работа № 18: Знакомство с asp.Net
- •1. Вводная часть
- •2. Создание веб-приложения asp.Net
- •3. Модификация веб-приложения asp.Net: реализация различной функциональности
- •4. Модификация веб-приложения asp.Net: ajax
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 18
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: подготовка интерфейса и добавление TabControl
- •4. Модификация приложения Windows Forms: вкладка «Просто фон!»
- •5. Модификация приложения Windows Forms: вкладка «Объекты и градиент»
- •6. Модификация приложения Windows Forms: вкладка «Мой монитор сломался!»
- •7. Модификация приложения Windows Forms: вкладка «Векторные часы»
- •8. Модификация приложения Windows Forms: вкладка «Огонь!!!»
- •9. Модификация приложения Windows Forms: вкладка «Дождик»
- •10. Завершающая часть
- •11. О приложении к Лабораторной работе № 19
- •1. Вводная часть
- •2. Основные положения при работе с f#
- •3. Создание приложения «Учебник по f#»
- •4. Создание консольного приложения
- •5. О приложении к Лабораторной работе № 21
- •22. Лабораторная работа № 22: Различные примеры на f# Лабораторная работа № 22: Различные примеры на f#
- •1. Вводная часть
- •2. Создание приложения «Приложение f#»
- •3. Модификация приложения f#: match
- •4. Модификация приложения f#: создание форм и рисование объектов на форме
- •5. Модификация приложения f#: работа с базой данных Microsoft Access
- •6. О приложении к Лабораторной работе № 22
- •23. Дополнительная лабораторная работа № 1
- •24. Дополнительная лабораторная работа № 2
- •25. Дополнительная лабораторная работа № 3
- •1. Вводная часть
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation: добавление ресурсов
- •4. Модификация приложения Windows Foundation Presentation: добавление исходного кода
- •5. Модификация приложения Windows Foundation Presentation: оформление элемента ListBox
- •6. Завершающая часть
- •7. О приложении к данной работе
24. Дополнительная лабораторная работа № 2
C# — Создание программ на языке C# без среды разработки
Как гласит заголовок этого материала, пока что, мы не будем запускать среду разработки. Но она и не нужна, ведь можно использовать даже обычный Блокнот. Данный способ полезен, когда нет нужды запускать визуальные среды разработки и код достаточно простой, но можно компилировать и массивные программы с множеством ресурсов. Также предполагается, что программист достаточно квалифицирован, ведь наличие визуализации (хотя бы подсветки) написания кода существенно облегчает процесс написания программ.
Цель данного материала это показать некоторые особенности языка Си-шарп и то, как может быть устроена простейшая программа.
Нам необходимо всего два файла: csc.exe и cscui.dll. Оба файла можно найти в папке Windows/Microsoft.NET/Framework (Рис. 1).
csc.exe ищем в папке v4.0.30319 (последние цифры могут изменяться в зависимости версии Framewokr’а):
Рис. 1. Содержимое папки Microsoft.NET/Framework
Нужный нам файл это: Visual C# Command Line Compiler – попросту компилятор приложений.
cscui.dll, называвшийся ранее cscompui.dll и работавший в паре с cscomp.dll лежит в папке v4.0.30319/1033 (Рис. 2):
Рис. 2. Содержимое папки v4.0.30319/1033
Это библиотека необходима для компилятора: Visual C# Compiler Error/Warning Messages.
Ссылки для загрузки этих файлов приведены в конце этого материала.
Копируем оба файла в папку, в которой хотим скомпилировать нашу ещё ненаписанную программу. И далее создаём в той же папке пустой текстовый документ (.txt) и напишем туда следующий код (пояснения будут даны чуть ниже):
using System;
using System.Globalization;
class MainApp
{
public static void Main()
{
Console.Title = "This is My First App!";
//
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.BackgroundColor = ConsoleColor.DarkBlue;
//
Console.WriteLine("Hello World!\nИ по-русски можно? Конечно, привет мир!\nThis is my first application using C#!\nP.S. C# and F# FTW?\n");
//
Calendar MyCalendar = new GregorianCalendar();
CultureInfo MyCulture = new CultureInfo("ru-RU");
DateTime MyDate = new DateTime(2012, 12, 21, 18, 30, 0, 0);
//
Console.WriteLine("Время записанное в календаре: " + MyCalendar.ToDateTime(MyDate.Year,
MyDate.Month,
MyDate.Day,
MyDate.Hour,
MyDate.Minute, 0, 0) + "\n");
//
DateTime now = DateTime.Now;
Console.WriteLine("Время запуска приложения: {0}\n", now);
//
Random rand = new Random();
int a = 0, b = 0;
for (int i = 0; i < 5; i++)
{
a = rand.Next() % 100;
b = rand.Next() % 100;
Console.WriteLine("a = {0}, b = {1}, больше: {2}", a, b, a > b ? 'a' : 'b');
}
//
Console.ReadKey();
}
}
Далее сохраним как Test.cs (в Блокноте: Сохранить как… -> Тип файла: Все файлы). Такое расширение (.cs) имеют файлы кода для программ на Си-шарп (Рис. 3):
Рис. 3. Создание файла для компиляции
После этого, создаём в этой же папке ещё один текстовый файл, внутри вписываем:
csc.exe Test.cs
pause
Сохраняем как Compile.bat (должен появиться новый .bat файл). Команда pause нужна для того, чтобы окошко компиляции не исчезало сразу.
Рис. 4. Создание командного файла
ПРИМЕЧАНИЕ: Мы можем и не копировать эти файлы (зачем делать лишнюю работу?), а воспользоваться возможностями .bat файлов и запустить компилятор прямо из той же папки, где он находится (но для этого его нужно всё равно найти), поместив затем откомпилированную им программу туда, куда нам нужно.
Способ № 1: модифицируем Compile.bat:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe Test.cs
pause
В итоге, скомпилируется программа Test.exe в той же папке, где находится файл Test.cs (Compile.bat запускаем из этой же папки, где лежит наш код).
Способ № 2: модифицируем Compile.bat:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /out:D:\VS\Test.exe D:\VS\Test.cs
pause
Здесь, параметр csc.exe /out:<file> указывает, куда именно записать скомпилированную программу и какое дать ей имя и расширение. Второй параметр указывает место, где хранится наш Test.cs. Этот способ предпочтительнее, так как не имеет значения, где лежит Compile.bat, где находится файл с исходным кодом и куда компилировать код. Единственное, чего необходимо избегать, это написания командных файлов в Блокноте с русскими символами в пути или названиях (предпочтительнее для этого использовать другой текстовый редактор, например: Bred 3).
Способ № 3: также мы можем воспользоваться стандартной командной строкой (Рис. 5) Visual Studio (Пуск -> Все программы -> Microsoft Visual Studio 2010 -> Visual Studio Tools -> Командная строка Visual Studio (2010)):
Рис. 5. Открываем командную строку через меню Пуск
В общем случае, путь прописываем как во втором способе (Рис. 6):
Рис. 6. Компиляция при помощи командной строки Visual Studio (2010), русские символы допускаются
Всё. Запускаем Compile.bat. Видим следующее (в окне командной строки):
Рис. 7. Компиляция программы… Успешно!
В нашей папке появился новый файл Test.exe. Собственно это и есть наша программа, скомпилированная только что без использования какой-либо среды программирования. Это удобно лишь в том случае, если под рукой нет среды разработки. Результат работы программы представлен на рисунке ниже:
Рис. 8. Рабочая программа (консольное приложение)
Теперь немного поясним код (ключевые слова подсвечены синим):
using System;
Конструкция выше — объявление использования пространства имён. В данном случае использовано системное пространство имён: System (но можно использовать и своё). Тоесть используя using, мы обращаемся к имени. В System содержится набор основных классов, и мы здесь создаём свой класс. А вот using — это зарезервированное слово в языке Cи-шарп. Что же это?
Директива using используется в двух случаях:
разрешает использование типов в пространстве имён, поэтому уточнение использования типа в этом пространстве имён не требуется: using System.Text;
позволяет создавать псевдонимы пространства имен или типа. Это называется директива using alias: using Project = PC.MyCompany.Project;
Ключевое слово using также используется для создания операторов using, которые обеспечивают правильную обработку объектов IDisposable, например файлов и шрифтов.
Как видим, также как и в C и C++ язык унаследовал символ «;» как символ разделения операторов, однако можно писать код и без этого разделителя (частично).
Вернёмся к нашему коду:
class MainApp {
В Visual C#, весь код должен содержаться в методах класса. Таким образом, к началу точки входа (в данном случае: в программу), необходимо сначала создать класс. Имя класса, здесь не имеет значения. Далее, указывается точка входа:
public static void Main() {
Компилятор требует, что-то, что можно назвать Main(). Точка входа должна быть маркирована как public, так и static. Кроме того, точка входа не имеет аргументов и ничего не возвращает (но это как в и C++ зависит от сложности программ, например: static void Main(string[] args)). Конструкция Main() должна начинаться с заглавной буквы, но само слово – не зарезервировано (не подсвечено синим в среде Visual Studio):
Console.Title = "This is My First App!";
//
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.BackgroundColor = ConsoleColor.DarkBlue;
//
Console.WriteLine("Hello World!\nИ по-руcски можно? Конечно, привет мир!\nThis is my first application using C#!\nP.S. C# and F# FTW?\n");
//
Здесь всё просто. Двойной правый слеш — комментарии (зелёным). Дальше идут функции реализующие работу с консольным приложением. А именно класс System.Console предоставляющий стандартные потоки (входной и выходной, а также сообщения об ошибках) консольным приложениям. Первая строчка отвечает за заголовок окна консольного приложения (Console.Title), вторая за фон под текстом, а третья за цвет букв. Четвёртая же выводит строку в скобках без кавычек. \n определяется как перевод курсора на следующую строку. Если System — это пространство имён, Console — класс, определённый в этом пространстве, то метод WriteLine — это метод определённый в этом классе (метод аналогичен процедуре, функции или подпрограмме).
Идём дальше по коду:
Calendar MyCalendar = new GregorianCalendar();
CultureInfo MyCulture = new CultureInfo("ru-RU");
DateTime MyDate = new DateTime(2012, 12, 21, 18, 30, 0, 0);
//
Console.WriteLine("Время записанное в календаре: " + MyCalendar.ToDateTime(MyDate.Year,
MyDate.Month,
MyDate.Day,
MyDate.Hour,
MyDate.Minute, 0, 0) + "\n");
//
Для двух верхних строчек следующего куска кода, нам понадобилось расширить пространство имён, используемого при компиляции строчкой, в противном случае мы не смогли бы получить доступ определённым зарезервированным словам:
using System.Globalization;
В самом же коде мы видим объявление объектов класса Calendar (первая строка – создаётся экземпляр MyCalendar с параметрами грегорианского календаря). Дальше объявляется класс CultureInfo. Он служит для предоставления сведений об определенном языке и региональных параметрах (которые в совокупности называются «языковым стандартом» для разработки неуправляемого программного кода). В этих сведениях содержатся имена языков и региональных параметров, система языка, используемый календарь и форматы дат, а также разделители строк. Дальше идёт DataTime с новым экземпляром MyDate которому ставится в соответствие фиксированная дата. И наконец, мы выводим всё на экран консоли в формате грегорианского календаря и региональными параметрами под ru-RU.
DateTime now = DateTime.Now;
Console.WriteLine("Время запуска приложения: {0}\n", now);
//
Random rand = new Random();
int a = 0, b = 0;
for (int i = 0; i < 5; i++)
{
a = rand.Next() % 100;
b = rand.Next() % 100;
Console.WriteLine("a = {0}, b = {1}, больше: {2}", a, b, a > b ? 'a' : 'b');
}
//
В первой строчке создаём экземпляр класса DateTime — now хранящий текущее время. И выводим на экран вместо символов {0}. Далее по коды, мы создаём генератор случайных чисел (rand), объявляем переменные типа int и загоняем всё это в цикл, основанный на int i. Цикл проводит 5 итераций. За каждую итерацию происходит генерация числа и операция % над этим числом: оператор модуля (%) вычисляет остаток после деления первого операнда на второй. Все числовые типы имеют предопределённые операторы модуля. И в этой же итерации выводится строка: вместо {0} и {1} подставляются a и b, а вместо {2} результат их сравнения (сравниваются остатки от деления).
Модифицируем приложение и посмотрим, что именно генерирует Random:
Рис. 9. Операция % не проведена над числами сгенерированными в Random
Немного поясним несколько простых правил при написании кода, так как зачастую подобные ошибки наиболее часто встречаемы и как следствие наиболее неприятны.
Во-первых, Си-шарп позволяет писать код свободно, но каждый оператор должен заканчивать точкой с запятой*:
public static void Main() {
Console.Title =
"This is My First App!"
;//
Console.ForegroundColor = ConsoleColor.DarkYellow;Console.BackgroundColor = ConsoleColor.DarkBlue;
//
Также в куске кода выше, показано, что можно написать код приложения даже в одну строчку.
Во-вторых, Си-шарп чувствителен к регистру. А это значит что ConsolE, Static и Public могут вызвать ошибки. Также важно понимать, что это касается и переменных и операторов.
ПРИМЕЧАНИЕ (*): Однако, не всегда точка с запятой обязана быть. Например, конструкция без точек с запятой ниже, выдаст сообщение с трёмя кнопками (Рис. 10):
class MainApp
{
public static void Main()
{
while (System.Windows.Forms.MessageBox.Show("Hello World without ';'! Привет мир без точек с запятой!", "This is My First Message Box!", System.Windows.Forms.MessageBoxButtons.YesNoCancel) != System.Windows.Forms.DialogResult.Yes)
{ } // До тех пор, пока не будет нажата кнопка «Да», окно не закроется
}
}
Рис. 10. Результат работы кода без точек с запятой (нужно нажать «Да»)
Получившуюся программу (Test.exe), собранную из кусков кода приведённых в этом материале, можно загрузить по ссылке в конце этого материала.