Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР01 Введение в MS VS 2008.doc
Скачиваний:
0
Добавлен:
08.11.2019
Размер:
3.95 Mб
Скачать

Описание решаемой учебной задачи

В качестве учебной задачи, на примере которой будут рассматриваться правила разработки программ в среде Visual Studio .NET 2008, будет использоваться задача расчета площади круга.

Как известно для расчета площади круга Sкр используется формула:

Sкр = π × r 2;

Алгоритм решения данной задачи очень простой:

  1. Начало работы.

  2. Вывод сообщения пользователю о вводе радиуса круга.

  3. Ввод пользователем с клавиатуры радиуса круга, для которого требуется вычислить площадь.

  4. Вычисление площади круга.

  5. Вывод на экран вычисленной площади круга.

  6. Завершение работы.

Начальное знакомство с программированием

Разработка программы в среде MS VS.NET будет показываться на примере конкретных практических действий:

  • Как создать проект.

  • Как добавить программный код в существующий метод.

  • Как ввести данные с клавиатуры в программу.

  • Как вывести сообщения на экран.

Данных сведений будет достаточно для разработки простых программ в среде MS VS .NET даже без предварительного изучения объектно-ориентированного программирования (ООП). Опыт разработки алгоритмов для решения учебных задач даст реальную основу для перехода к успешному освоению объектно-ориентированного программирования.

В ООП все данные (переменные) и обрабатывающие их процедуры и функции объединяются в классы. Переменные класса называются полями, а функции и процедуры – методами класса. Перед использованием класса необходимо дать его описание. По описанию класса можно создать его реализацию – объект (иногда еще говорят – экземпляр класса), в котором для входящих в класс полей будет выделена память. В этой памяти можно будет хранить значения полей объекта и выполнять их обработку. По описанию класса можно создавать любое необходимое количество объектов.

В качестве примера класса можно привести программный код:

using System;

namespace LabWork1 {

class Program{

static void Main(){

Console.Write("Введите радиус круга:");

string s = Console.ReadLine();

double r = Convert.ToDouble(s);

double p = Math.PI * r * r;

Console.WriteLine("Площадь круга = {0}", p);

Console.ReadLine();

return;

}

}

}

В первой строке примера программы указано, какое пространство будет использоваться. Пространства имен – это способ объединения в группы связанных классов. Ключевое слово namespace объявляет пространство имен, с которым должны связываться все описанные в нем классы. Утверждение using указывает на пространство имен, которое должен просматривать компилятор для поиска любого класса, который используется в коле программы, но который не описан в текущем пространстве имен. Это утверждение аналогично утверждению import на языке Java.

Причиной использования утверждения using в приведенной программе является то, что в ней используются классы из библиотеки FCL, которые включены в пространство имен System. Использование утверждения using System; позволяет ссылаться на классы System.Console и System.Conver, как Console и Convert, без указания пространства имен. В стандартном пространстве имен System содержится большинство используемых типов данных платформы .NET. Важно понимать, что все реализуемое с помощью языка C# основывается базовых классах .NET. Сам язык C# не имеет встроенных операторов ввода – вывода, также как и встроенных типов, а полностью основывается на классах .NET.

В следующей строке программы объявляется новое пространство имен LabWork1, в котором описывается один класс Program:

namespace LabWork1 {

class Program{

. . .

}

}

Полным именем данного класса является LabWork1.Program. Как и в языке Java, весь код программы C# должен содержаться только внутри классов. Описание классов в C# состоит из ключевого слова class, за которым стоит название класса и пара фигурных скобок (блок). Весь код, связанный с классом должен записываться между этими фигурными скобками. В классе Program описан только один метод с именем Main() (отметим, что первая буква имени это большая M ):

static void Main() { ... }

Данный метод запускается автоматически (является точкой входа) при запуске программы на выполнение. Он может возвращать целое значение (int) или не возвращать ничего (void). Данный метод C# соответствует методу main() в языках C++ и Java. Описание методов в C# имеет следующую структуру:

[модификаторы] тип_результата имя_метода ([параметры]){

// содержание метода

}

Здесь квадратные скобки указывают не обязательные элементы описания. Модификаторы используются для задания некоторых особенностей методов, например, таких как откуда и как данный метод может вызываться. В примере программы используются два модификатора: public и static . Модификатор (режим доступа) public означает, что данный метод может быть доступен из методов любых классов. Модификатор static указывает, что данный метод не связан с конкретным экземпляром класса и может вызываться без использования ссылки на экземпляр. Это является важным, для запуска программы на выполнения без создания экземпляра конкретного класса. В примере задан тип результата void (означает, что никакого результата нет) и для метода Main() не описаны передаваемые параметры.

И, наконец, рассмотрим сами операторы метода Main(). Первый оператор выполняет вывод подсказки с помощью метода Write() класса Console:

Console.Write("Введите радиус круга:");

Данный метод выводит строку текста на экран в консольное окно, но не переводит курсор на начало следующее строки. Для ввода данных пользователя используется метод ReadLine()того же класса Console для получения данных с клавиатуры (при этом сразу же объявляется переменная s типа string):

string s = Console.ReadLine();

Пользователь может ввести число (для отделения дробной части используется запятая, например: 2,5) и нажать клавишу Enter. Метод ReadLine()возвращает текстовую строку (тип string). Для того, чтобы получить из текстовой строки s вещественное значение для переменной r (которая также объявляется в данной строке, например, как тип double) используется метод ToDouble(s)класса Convert:

double r = Convert.ToDouble(s);

Полученное значение радиуса используется для вычисления величины площади круга, которое сохраняется в переменной p:

double p = Math.PI * r * r;

Отметим, что для вычисления используется значение числа “пи”, которое можно получить из статического класса System.Math библиотеки FCL. Для вывода вычисленного значения используется метод WriteLine() со строкой форматирования:

Console.WriteLine("Площадь круга = {0}", p);

И, наконец, для того, чтобы консольное окно не закрылось автоматически после выполнения программы, используется метод ReadLine(), который приостанавливает выполнение программы до нажатия клавиши Enter:

Console.ReadLine();

После этого выполняется оператор return, который вызывает завершение работы метода. Обычно данный оператор возвращает результирующее значение, но так как у данного метода указан тип void в заголовке, то никакого значения не возвращается. В этом случае данный оператор можно было и не записывать.

Для сравнения – схожая программа на языке Java

import java.util.Scanner;

class Program

{

private static final double PI = 3.1416;

public static void main ( String [] args )

{

System.out.print ( "Введите радиус круга:" ) ;

Scanner keyboard=new Scanner ( System.in ) ;

double r = keyboard.nextDouble();

double p = PI * r * r;

System.out.print ("Площадь круга = ") ;

System.out.println( p ) ;

}

}