Разработку программ будем вести в интегрированной среде разработки SharpDevelop. Это система разработки с открытым кодом, внешне очень похожа на Microsoft Visual Studio. SharpDevelop позволяет выполнять всё то же, что вы делали бы в Visual Studio.
Integrated Development Environment (интегрированная среда разработки), или, сокращенно, IDE – это программный продукт, объединяющий текстовый редактор, компилятор, отладчик и справочную систему.
Любая программа, создаваемая в среде SharpDevelop, даже такая простая, как "Hello World!", всегда оформляется как отдельный проект (project). Проект — это набор взаимосвязанных исходных файлов и, возможно, дополнительных файлов, компиляция и компоновка которых позволяет создать исполняемую программу. Однако разработчики и SharpDevelop, и Visual Studio пошли еще дальше, стремясь удовлетворить потребности не только программистов-одиночек, но и больших коллективов разработчиков программных продуктов. Так появилось понятие решения (solution). Решение может содержать любое количество различных проектов, сгруппированных вместе для согласованной разработки: от отдельного приложения до библиотеки классов или целого программного пакета. Очевидно, что для решения наших учебных задач каждая программа будет воплощаться в виде одного проекта, поэтому решение у нас всегда будет содержать ровно один проект.
Среда SharpDevelop позволяет разрабатывать программы на языках C#, Basic .NET, а также на ряде других языков программирования (в зависимости от версии SharpDevelop). В настоящее время обычно используют версии SharpDevelop 2.2 или SharpDevelop 3.2.
Существует целый ряд заготовок (шаблонов) готовых проектов, на базе которых можно разрабатывать консольные, оконные приложения и создавать модули компонентов.
Изучение возможностей языка программирования лучше всего начинать с разработки консольных приложений. Порядок создания таких программ следующий:
1)Запускаем SharpDevelop из главного меню:
Пуск/Программы/SharpDevelop 2.2/SharpDevelop 2.2
или щелкаем по ярлыку программы SharpDevelop 2.2 на рабочем столе.
2)На стартовой странице (Start page), если она открыта, нажимаем на кнопку New solution или в меню программы выбираем File/New/Solution...
3)Откроется окно создания нового проекта:
Необходимо выбрать тип проекта: «Console Application», задать имя проекта, например: Primer1, определить папку, в которой будет сохранён проект (Location), например, 2202 (номер группы).
Затем нажимаем на кнопку Create (Создать). Всё, проект создан. В окне редактирования будет виден текст минимальной программы на языке C#:
/*
* Created by SharpDevelop.
* User: User
* Date: 15.02.2011
* Time: 19:50
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace Primer1
{
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
// TODO: Implement Functionality Here
Console.Write("Press any key to continue ...");
Console.ReadKey(true);
}
}
}
Запуск программы на выполнение осуществляется путём нажатия на кнопку (!) на панели инструментов или выбором пункта меню Debug/Run without debugger.
Если запустить на выполнение эту программу, то в окне выводы увидим следующее:
Теперь остаётся вместо области TODO написать тот текст, который необходим для решения поставленной задачи.
Пояснения к этой минимальной программе
1)В начале текста программы мы видим многострочный комментарий, добавленный системой. Он начинается парой символов /* (косая черта и звёздочка) и заканчивается символами */ (звёздочка и косая черта). Этот комментарий можно удалить или заменить на более подходящий.
2)Далее идёт строка
using System;
Данная строка указывает на то, что в программе будет использована область имён System. Эта область имён является обязательной для любой программы на языке C#. Кроме области имён System при необходимости могут быть использованы и другие области имён.
3)Строка
namespace Primer1
является заголовком Вашей собственной области имён (namespace — ключевое слово, означающее область имён, Primer1 — название этой области). Название области имён создаётся системой SharpDevelop и совпадает с названием проекта. Сама область имён представляет собой блок и начинается с открывающей фигурной скобки { (это первая фигурная скобка, записанная сразу же за заголовком нашей области имён), а заканчивается соответствующей закрывающей скобкой } (находится в последней строке программы).
4)Внутри области имён Primer1 находится определение класса Program (class — ключевое слово, с помощью которого определяется класс, Program — название класса):
class Program
Тело класса также представляет собой блок. В нашей области имён определён всего один класс. При необходимости в области имён могут быть определены и другие классы. В тексте программы на языке C# в области имён обязательно должен быть определён хотя бы один класс. Имя данному классу также назначено системой. Его можно при желании заменить на другое.
Классы — основные строительные блоки программ на языке C#. Их изучением мы займёмся позже, а пока используем заготовку класса Program как есть.
5)Внутри класса Program определён единственный метод Main(). Вот его заголовок:
public static void Main(string[] args)
Тело метода также представляет из себя блок. Метод Main() — это главный метод в любой программе на языке C#. Он является обязательным для каждой программы на C#. Именно с метода Main() начинается выполнение программы.
Метод — это часть текста программы, оформленная особым образом. В методах реализуются все необходимые действия программы. Определение методов всегда даётся внутри классов. Количество методов в классах может быть произвольными. Более подробно изучать разработку и использование методов будем позже. Пока будем использовать заготовку метода Main() как есть.
6)Строка
Console.WriteLine("Hello World!");
предназначена для вывода текстового сообщения в консольном приложении. Дословно эту строку можно перевести так: вызывается метод WriteLine(), который определён в классе Console, а тот в свою очередь находится в стандартной области имён System. Символьная строка "Hello World!" — параметр метода WriteLine() — это та информация, что и будет выведена на экране.
7)Строка
// TODO: Implement Functionality Here
является однострочным комментарием и предназначена для пояснения: именно здесь и пишите тот программный текст, который Вам нужен.
8)Строки в конце программы
Console.Write("Press any key to continue ...");
Console.ReadKey(true);
предназначены для задержки выполнения программы. Не удаляйте их! Дело в том, что если эти строки отсутствуют в конце текста консольного приложения, то после выполнения вычислений окно консоли сразу же закроется. Вы можете просто не успеть увидеть результаты работы программы. Если эти строки остались Вами нетронутыми, то Вы можете спокойно изучать результаты работы программы столько времени, сколько Вам потребуется.
Собственно, для задержки выполнения программы нужен только метод ReadKey() (ожидается нажатие на любую клавишу), но и печать подсказки тоже не лишняя. Именно по выводу на экране текста "Press any key to continue …" («Нажмите на любую клавишу для продолжения...») становится понятно, что программа выполнена до конца. Нажмём на любую клавишу и окно вывода будет закрыто.
Пример. Написать программу для вычисления гипотенузы прямоугольного треугольника при условии, что известны катеты этого треугольника.
Обозначим длины катетов как в математике: a и b, гипотенузу — как c.
Порядок действий будет такой:
задаём с клавиатуры входные данные — значения a и b;
вычисляем значение гипотенузы по формуле
;
печатаем полученное значение c.
Для написания этой программы воспользуемся заготовкой консольного приложения, приведённой выше.
Вот окончательный текст программы:
/*
* Created by SharpDevelop.
* User: User
* Date: 15.02.2011
* Time: 19:50
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace Primer1
{
class Program
{
public static void Main(string[] args)
{
double a, b, c;
Console.Write("a=");
a = double.Parse(Console.ReadLine());
Console.Write("b=");
b = double.Parse(Console.ReadLine());
c = Math.Sqrt(a*a + b*b);
Console.WriteLine("c={0}", c);
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
Результаты выполнения программы:
a=3
b=4
c=5
Press any key to continue . . .
Пояснения к тексту программы
Рассмотрим текст метода Main() (всё остальное мы разобрали ранее).
1)Для решения поставленной задачи нам требуется 3 переменные. В строке
double a, b, c;
выделена память для этих переменных. Тип переменных — double (вещественный с удвоенной точностью), начальное значение переменным не задаём, так как намерены задать входные данные a и b с клавиатуры.
2)Строка
Console.Write("a=");
предназначена для вывода текста-подсказки. Пользователь программы должен понимать, что от него требуется. В данном случае будет напечатано
a=
(мы собираемся задать значение переменной a).
3)В строке
a = double.Parse(Console.ReadLine());
выполняется присваивание переменной a значения, введённого с клавиатуры. Как это работает? Мы вводим с клавиатуры число, например: число 3, как в данном примере, но воспринимается это число как символьная строка. Поэтому вначале и вызывается метод ReadLine() класса Console. Именно этот метод возвращает символьною строку, то есть символьное представление нужного нам числа. Затем символьная строка поступает в метод Parse() структуры double и выполняется преобразование строки в вещественное число типа double. Последний шаг — присваивание полученного результата переменной a.
Обратите внимание на следующее: тип данных double является не просто стандартным типом данных в языке C#, он является структурой, то есть имеет совсем не такую уж простую организацию. Это же относится и ко всем другим стандартным типам данного языка. А вот в старых языках программирования (C, Pascal, Basic) стандартные типы данных были действительно простыми типами.
Подведём промежуточный итог. Два строки
Console.Write("a=");
a = double.Parse(Console.ReadLine());
обеспечивают ввод значения переменной a с клавиатуры, при этом печатается и подсказка, поясняющая, что требуется от пользователя программы. После выполнения этих действий на экране будет выведено:
a=3
4)В последующих двух строках строках
Console.Write("b=");
b = double.Parse(Console.ReadLine());
выполняется ввод с подсказкой значения другой переменной — переменной b. Делается всё точно также, как и для переменной a.
5)В строке
c = Math.Sqrt(a*a + b*b);
выполняется вычисление гипотенузы c. Справа от знака присваивания = записан вызов метода Sqrt(), определённый в классе Math. Метод Sqrt() предназначен для вычисления квадратного корня из вещественного числа.
6)В строке
Console.WriteLine("c={0}", c);
осуществляется вывод результата работы — печатается текст
c=5
В символьной строке, являющейся первым параметром метода WriteLine(), имеется не только текст, но и формат, определяющий правила вывода переменной c. Здесь используется простейший вариант формата {0}, который определяет порядковый номер выводимых параметров. Нумерация параметров всегда начинается с 0. Именно этот номер и соответствует переменной c.
|
|
|