Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

CSBasicCourse2ndedPodbelsky / CSBasicCourse2ndedPodbelsky

.pdf
Скачиваний:
31
Добавлен:
22.03.2016
Размер:
2.08 Mб
Скачать

class helloUser

{

static void Main()

{

string name;

System.Console.WriteLine("Введите Ваше имя: "); name = System.Console.ReadLine();

System.Console.WriteLine("Приветствую Вас, "+name+"!");

}

}

Для тех, кто не знаком с синтаксисом Си, Си++ и производных от них языков,

отметим, что первая строка однострочный комментарий.

Вторая строка class helloUser – это заголовок определения класса с именем

helloUser. Напомним, что class служебное слово, а идентификатор helloUser

выбрал автор программы.

Далее в фигурных скобках тело класса.

В классе helloUser только один метод с заголовком static void Main()

Как уже сказано, служебное слово static "служебное слово: static" - это

модификатор метода класса (отличающий его от методов объектов). Служебное

слово void определяет тип, соответствующий особому случаю "отсутствие значения". Его использование в заголовке означает отсутствие возвращаемого

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

что имя Main не является служебным словом языка C#.

Вслед за заголовком в определении каждого метода "метод" помещается его тело "тело" – заключенная в фигурные скобки последовательность определений,

описаний и операторов. Рассмотрим тело метода Main() в нашем примере.

string name; – это определение (декларация) строковой переменной с

выбранным программистом именем name. string служебное слово языка C# -

обозначение предопределенного типа (System.String) для представления строк.

Подробнее о типах речь пойдет позже.

Для вывода информации в консольное окно используется оператор:

System.Console.WriteLine(“Введите Ваше имя: ”);

Это обращение к статическому методу WriteLine() библиотечного класса

Сonsole, представляющего в программе консоль. System

обозначение

пространства имен (namespace), к которому отнесен класс

Console. (О

пространствах имён чуть позже в § 1.3)

 

Метод WriteLine() класса Console выводит значение своего аргумента в консольное окно. У этого метода нет возвращаемого значения, но есть аргумент. В

рассматриваемом обращении к методу WriteLine() аргументом служит строковая константа Введите Ваше имя: ”. Ее значение последовательность символов,

размещенная между кавычек. Именно это сообщение в качестве приглашенияувидит пользователь в консольном окне при выполнении программы.

Текст с приглашением и последующим ответом пользователя для нашей

программы могут иметь, например, такой вид:

Введите Ваше имя: Тимофей<ENTER>

Здесь <ENTER> - условное обозначение (добавленное на бумаге, но отсутствующее на консольном экране) нажатия пользователем клавиши ENTER.

Когда пользователь наберет на клавиатуре некоторое имя (некоторый текст) и

нажмет клавишу ENTER, то будут выполнены действия, соответствующие оператору

name = System.Console.ReadLine();

Здесь вначале вызывается метод ReadLine() класса Console из пространства имен System. Метод ReadLine() не имеет аргументов, но у него есть возвращаемое значение строка символов, прочитанная из стандартного входного потока консоли. В нашем примере возвращаемое значение строка Тимофей”.

Обратите внимание, что метод ReadLine() выполнится только после нажатия

клавиши ENTER. До тех пор пользователь может вносить в набираемый текст любые исправления и изменения.

В рассматриваемом операторе слева от знака операции присваивания =

находится имя name той переменной, которой будет присвоено полученное от консоли значение. После приведенного выше диалога значением name будет

"Тимофей".

Следующий оператор содержит обращение к уже знакомому методу:

System.Console.WriteLine(“Приветствую Вас,” +name+

”!”);

В качестве аргумента используется конкатенация "конкатенация" (сцепление,

соединение) трех строк:

строковой константы “Приветствую Вас, ”;

строковой переменной с именем name;

строковой константы “!”.

В качестве обозначения операции конкатенации строк используется символ +. (Обратите внимание, что в выражениях с арифметическими операндами знак +

означает операцию сложения. Эта особенность операций по-разному выполняться для разных типов операндов называется полиморфизмом "полиморфизм" .

Полиморфизм и его формы мы еще рассмотрим подробнее.). При конкатенации в нашем примере значения строковых констант присоединяютсяк значению переменной с именем name.

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

Введите Ваше имя: Тимофей<ENTER> Приветствую Вас, Тимофей!

Для продолжения нажмите любую клавишу . . .

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

консольного окна. Если приложение выполняется вне интегрированной среды, то есть из консольной строки, то фраза "Для продолжения нажмите любую клавишу"

будет отсутствовать.

1.3. Пространство имен

В нашей программе использованы обращения к двум статическим методам

класса Console. В общем виде формат обращения к статическим членам класса:

Название_пространства_имен.имя_класса.имя_члена

Эта конструкция в языке C# называется уточненным, квалифицированным или составным именем. Первым элементом квалифицированного имени является наименование пространства имен. Поясним это понятие. Вначале приведём опубликованные в литературе определения.

"Пространство имен "пространство имен" – механизм, посредством которого поддерживается независимость используемых в каждой программе имен и исключается возможность их случайного взаимного влияния" [6]

"Пространство имен определяет декларативную область, которая позволяет отдельно хранить множества имен. По существу, имена, объявленные в одном пространстве имен, не будут конфликтовать с такими же именами, объявленными в другом." [11]

Каждая программа на C# может использовать либо свое собственное уникальное пространство имен, либо размещает свои имена в пространстве,

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

Понятие пространства имен появилось в программировании в связи с необходимостью различать одноименные понятия из разных библиотек,

используемых в одной программе. Пространство имен System объединяет те классы из .NET Framework, которые наиболее часто используются в консольных программах на C#.

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

using имя_пространства_имен;

После такого оператора для обращения к статическому члену класса из данного пространства имен можно использовать сокращенное квалифицированное

имя

имя_класса.имя_члена

В нашей программе используются: пространство имен System, из этого пространства - класс Console и два статических метода этого класса WriteLine( ) и

ReadLine( ).

Поместив в программу оператор

using System;

можно обращаться к названным методам с помощью сокращенных составных имен Console.WriteLine( ) и Console.ReadLine( ).

Именно так мы будем поступать в следующих примерах программ.

1.4. Создание консольного приложения

В отличие от языков предшествующих поколений, язык C# невозможно применять, изучив только синтаксис и семантику языковых конструкций. На приведённом примере программы мы уже убедились, что даже такие элементарные действия как вводвывод тестовой информации требуют применения механизмов,

не входящих в язык программирования. Эти механизмы предоставляются программисту в виде средств платформы .NET. Платформа .NET поддерживает не только язык C#, но и десятки других языков, предоставляя им огромную

библиотеку классов, упрощающих разработку программ разного назначения. Не пытаясь описать все достоинства и особенности .NET, отметим только следующее: .NET позволяет в одном программном комплексе объединять программы, написанные на разных языках программирования. .NET в настоящее время реализована для разных операционных систем. Для .NET разработаны мощные и наиболее современные системы (среды) программирования. Назовём две из них.

Фирма Microsoft (разработчик продукта .NET Framework) предлагает программистам среду программирования Visual Studio. Корпорация Borland

выпускает систему программирования Borland Developer Studio (BDS). Кроме коммерческих продуктов с указанным наименованием обе фирмы выпускают следующие свободно распространяемые (бесплатные) системы программирования,

возможностей которых вполне достаточно для изучения программирования на языке C#:

Visual C# 2010 Express Edition

( HYPERLINK "http://msdn.microsoft.com/vstudio/express/" http://

msdn.microsoft.com/vstudio/express/);

Turbo C# Explorer ( HYPERLINK "http://www.borland.com/downloads/

download_turbo.html" http://www.borland.com/downloads/download_turbo.html).

Предполагая, что читатель имеет возможность работать с одной из сред программирования, поддерживающей язык C#, перейдём к описанию технологии создания простых программ. Будем использовать Visual Studio 2008.

Программируя на C# в .NET Framework, можно в частности разрабатывать

(программы других видов в книге не рассматриваются):

консольные приложения; Windows—приложения;

библиотеки классов.

Программу, которую мы привели в предыдущем параграфе, проще всего

реализовать как консольное приложение.

Независимо от того, какого вида программа разрабатывается, в Visual Studio

необходимо создать решение "решение" (Solution) и в этом решении проект

"проект" (Project). Создание пустого (без проектов) решения не имеет смысла,

поэтому решение будет автоматически создано при создании нового проекта.

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

Как только среда разработки (например, Visual Studio 2010) запущена,

выполните следующие шаги.

Создание нового проекта.

File -> New -> Project

Вокне New Project на левой панели (Project Types) выберите язык (Visual C#)

иплатформу (Windows). На центральной панели выберите вид приложения Console Application.

Вполе Name вместо предлагаемого по умолчанию имени ConsoleApplication1

напечатайте выбранное вами имя проекта, например Program_1. В поле Location

введите полное имя папки, в которой будет сохранено решения, например, С:

\Программы. По умолчанию решению приписывается имя его первого проекта (в

нашем примере Program_1). Кнопкой ОК запускаем процесс создания проекта (и

решения).

Среда Visual Studio 2010 создает решение, проект приложения и открывает окно

редактора с таким текстом заготовки для кода программы: using System;

using System.Collections.Generic; using System.Linq;

using System.Text; namespace Program_1

{

class Program

{

static void Main(string[] args)

{

}

}

}

Несмотря на то, что никакого кода в проект мы не добавляли, это приложение вполне работоспособно. Его можно следующим образом запустить на

компиляцию и выполнение:

Debug -> Start Without Debuggind (или сочетание клавиш Ctrl+F5)

Откроется консольное окно с единственной фразой:

«Для продолжения нажмите любую клавишу…»

Это сообщение среды разработки, завершающее исполнение консольного приложения.

Дополним созданную средой разработки заготовку кода консольного

приложения операторами из нашей первой программы: using System;

using System.Collections.Generic; using System.Linq;

using System.Text; namespace Program_1

{

class Program

{

static void Main(string[ ] args)

{

string name;

System.Console.WriteLine("Введите Ваше имя: "); name = System.Console.ReadLine( );

System.Console.WriteLine("Приветствую Вас, " + name + "!");

}

}

}

Теперь по нажатию клавиш Ctrl+F5 программа откомпилируется, начнет выполнение, выведет приглашение: «Введите Ваше имя: » и, в ответ на введенное имя, «поздоровается».

В отличие от первой программы 01_01.cs в тексте заготовки, созданной средой

Visual Studio 2008, присутствуют лишние для нашей программы операторы. Во-

первых, вместо четырех операторов using, можно обойтись одним using System;.

Во-вторых, нет необходимости в явном указании параметра в заголовке

метода:

static void Main(string[ ] args)

Конструкция string[ ] args никак не используется в нашем приложении и может быть удалена. Назначение этой конструкции будет рассмотрено в последующих главах, где мы ее используем в заголовке метода Main( ).

Третья особенность заготовки наличие объявления пространства имен:

namespace Program_1 {…}

Это объявление вводит для программы собственное пространство имен с обозначением Program_1. Программа 01_01.cs не содержит такого объявления и поэтому использует стандартное пространство имен. Это вполне допустимо для тех небольших программ, которые мы будем приводить в книге в качестве примеров.

Контрольные вопросы

Объясните, что такое тип.

Как можно определить понятие "переменная"?

Приведите примеры классов и объектов.

Перечислите признаки объектов.

В чём отличия членов класса от членов объекта?

Дайте определение идентификатора.

Объясните назначение отдельных частей простейшей программы на C#.

Каково назначение статического метода Main( )?

Возможно ли написать программу на C#, не применяя классов?

Что такое тип void?

Какие методы класса Console применяются для ввода и вывода данных?

Вкакой момент выполняется чтение вводимых с клавиатуры данных?

Вчём различие методов Console.Write() и Console.WriteLine()?

Что такое пространство имён?

Какое из слов конструкции System.Console.ReadLine() является именем пространства имён?

Для каких целей применяется директива using?

Чем решение (solution) в Visual Studio отличается от проекта (Project)?

Перечислите имеющиеся в языке C# средства объявления новых типов.

Как вы понимаете термин "инкапсуляция"?

В чём состоит различие статических и нестатических членов класса?

Перечислите известные вам виды членов класса.

Объясните смысл (назначение) каждого элемента в составном имени

System.Console>WriteLine.

Что обозначает операция "+" в бинарном выражении, одним из операндов которого

является строка (объект класса string)?

Соседние файлы в папке CSBasicCourse2ndedPodbelsky