Первая программа на C# и основные приемы работы в системе MS Visual Studio — КиберПедия 

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Первая программа на C# и основные приемы работы в системе MS Visual Studio

2021-04-18 93
Первая программа на C# и основные приемы работы в системе MS Visual Studio 0.00 из 5.00 0 оценок
Заказать работу

После запуска MS Visual Studio (далее – VS) следует выполнить команду File →New →Project. Далее в диалоговом окне выбрать один из доступных языков программирования (обычно – C#, C++, Visual Basic и J#). Наш курс построен на основе языка C#. После выбора языка C# следует выбрать одну из разновидностей (template – шаблонов) приложения. Шаблон Console Application мы будем использовать для создания учебных приложений, не использующих стандартный оконный интерфейс взаимодействия с пользователем (за это отвечает шаблон Windows Application). Далее в том же окне напечатайте придуманное имя проекта (вместо стандартного ConsoleApplication1 или WindowsApplication1) и укажите папку – место расположения проекта в файловой системе Вашего компьютера.

Допустим, Вы назвали проект FirstApp и выбрали шаблон Console Application. Что такое проект? Разве нельзя просто написать программу? В современных системах программирования даже простейшая программа должна храниться в исходном файле, являющемся частью проекта. В более сложных ситуациях кроме текста на языке программирования, программа будет использовать некоторые дополнительные ресурсы, например, рисунок для значка приложения. Удобно, если все такие ресурсы и файлы с исходными текстами будут храниться в одном месте. Это место и называется проектом. В нашем случае VS создала проект FirstApp с одним исходным файлом Program.cs (cs – стандартное расширение для языка C#). VS даже сгенерировала некоторый текст программы:

01. using System;

02. using System.Collections.Generic;

03. using System.Text;

04. namespace FirstApp

05. {

06. class Program

07. {

08. static void Main(string[] args)

09. {

10. }

11. }

12. }

Номера строк приведены здесь для удобства – в VS эти номера не видны. Эта «непонятная» программа даже работает, если Вы выполните команду Start Debugging (F5 или кнопка ). После запуска программа на мгновение показывает черное консольное окно и «успешно» завершает работу.

Завершите работу VS (не забыв сохранить изменения) и исследуйте файловую систему – в папке, указанной вами для хранения проекта была создана папка FirstApp с таким содержимым:

Несколько неожиданно, что в папке FirstApp имеется еще одна вложенная папка FirstApp. Сам исходный файл Program.cs находится именно во вложенной папке. Дело в том, что при создании нового проекта VS  автоматически создает еще и так называемое решение (solution). Решение может содержать несколько проектов. Это удобно, когда разработчик одновременно занимается несколькими сходными проектами. Поэтому папка FirstApp окружена еще одним группирующим слоем – папкой FirstApp для решения. В этой папке имеется специальный файл решения с расширением sln. Щелкните по файлу FirstApp.sln дважды и Вы запустите VS с уже загруженным решением FirstApp. Позже Вы узнаете, как добавлять в решение проект.

Чтобы программа стала более содержательной, после строки 08 добавьте следующие строки:

09. string a, b, c; // описание строковых переменных

10. a = Console.ReadLine(); //ввод двух строк

11. b = Console.ReadLine(); //с клавиатуры

12. c = a + b;             //конкатенация строк

13. Console.WriteLine(c);   //вывод строки на экран

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

Строка 09 содержит почти обычный оператор описания трех переменных и комментарий в конце строки. Здесь важно заметить, что переменные a, b и c относятся к встроенному в C# типу string – полноценному типу данных, поддерживающему работу со строками. Может быть кто-то помнит, как «занимательно» было писать программы, работающие со строками в старом добром языке С. Помните, что строки можно было моделировать даже двумя способами (как массив символов или адресуемая указателем область памяти). В конце каждой строки следовало поместить символ-терминатор ‘\0’. А еще Вам предоставляли много-много функций для работы со строками. Только в разных системах программирования наборы этих функций «немножко» отличались и описывались в разных заголовочных файлах.

Используя тип string в C#, Вы сможете «почувствовать разницу»,. Ввести содержимое строки с клавиатуры теперь можно с помощью конструкции Console.ReadLine() – это похоже на вызов функции, возвращающей значение, которое копируется в переменную с помощью оператора присваивания. Оператор в строке 12 интуитивно понятен (для склеивания строк в C++ предлагалось использовать неочевидную функцию strcat). Наконец, вывод на экран происходит с помощью строки 13.

Очень важно понять, как выполняется ввод и вывод. Здесь использован тяжеловесный, по сравнению с объектами cin и cout, синтаксис. В обоих случаях используется один класс Console. Он обеспечивает несколько функций (методов) для управления консолью. Среди них – метод ReadLine для ввода с клавиатуры и методы Write и WriteLine для вывода на экран. Как и C++, язык C# чувствителен к регистру – «опечатка» Writeline приведет к ошибке на этапе компиляции.

Метод WriteLine после вывода своего параметра на экран автоматически переводит курсор в начало новой строки. Метод Write оставляет курсор в текущей строке. По-прежнему можно использовать и «старый» способ перехода на новую строку – управляющий символ ‘\n’. Например,

Console.Write(“Hello,\nmy friend!\n”);

выводит на экран две строки и переводит курсор в начало третьей.

Метод ReadLine позволяет пользователю ввести строку символов. После нажатия клавиши Enter введенная строка становится возвращаемым значением метода ReadLine.

Замечание: не используйте похожий метод Read. Почему? Ищите ответ в справочной системе VS.

Только что мы использовали очень важное понятие - класс. Сейчас его можно упрощенно (!) определить как программную конструкцию, обеспечивающую ряд сходных функций. Если в VS Вы напечатаете в тексте программы название класса с последующей точкой, то VS «сообразит», что Вы хотите воспользоваться одним из методов класса и покажет «умный» список со всеми элементами класса (такие списки действительно называются IntelliSense– здравый смысл).

Для вызова метода класса, следует использовать следующий синтаксис:

<имя класса>.<имя метода>()

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

Класс Console, как и многие другие полезные классы входит в состав среды.NET. Эту компоненту.NET называют Basic Class Library (BCL). Поражает количество классов – более 2000. Если каждый из классов предоставляет по 10 методов, то количество методов просто ошеломляет. Поэтому классы хотя бы частично решают проблему группировки большого количества методов. Для дальнейшей классификации используются так называемые пространства имен (namespaces). Например, в наиболее популярном пространстве имен System имеется 113 классов. Их было бы еще больше, если само пространство имен System не состояло из нескольких вложенных пространств имен. Например, пространство имен System.IO содержит 34 класса, имеющих отношение к файловому вводу/выводу и управлению файловой системой.

Таким образом, система классов и пространств имен напоминает файловую систему, где роль файлов играют классы, а роль папок – пространства имен.

Из соображений эффективности приложение не может использовать любые классы BCL. Если программист хочет использовать в программе некоторый класс, он должен написать в начале исходного текста программы директиву using, указывающую пространство имен, содержащее этот файл. Как видите, в простейшей программе VS сгенерировала подключение трех пространств имен:

using System;

using System.Collections.Generic;

using System.Text;

Итак, определилось одно из многочисленных свойств.NET – она предоставляет обширнейший набор полезных функций в виде методов классов BCL.

Модернизируем нашу программу, чтобы она работала не со строками, а с целыми числами. На первый взгляд для этого нужно только заменить описание переменных a, b и c:

int a, b, c; // описание целых переменных

Действительно, в языке C# сохранилась возможность описывать таким образом переменные для представления целых чисел. В.NET им отводится 32 бита в памяти. Однако при попытке применить метод Console.WriteLine, компилятор выдает следующую ошибку:

Cannot implicitly convert type 'string' to 'int'

В документации сказано, что метод ReadLine возвращает строку символов (тип string). Однако неявного преобразования (implicit conversion) при присваивании целой переменной C# делать не собирается. Возникает необходимость явного преобразования. Не следует путать приведение и преобразование типов. Приведение типов не требует выполнения преобразования информации и применяется, когда программист хочет сказать, что в некоторой области памяти или переменной уже находится значение некоторого типа. Если в действительности в памяти не находится соответствующее значение, то при выполнении программы возникнет ошибка. Преобразование типа – это процедура преобразования информации. Очевидно, что в нашем случае требуется преобразование. Где искать соответствующую возможность. Если Вы уже прониклись духом объектно-ориентированных систем программирования, то правильно ответите – нужно искать метод некоторого класса. Наша проблема может быть решена с помощью класса – специалиста по подобным преобразованием. У него и название соответствующее – Convert.

Теперь для получения значений переменных a и b нужно использовать такие операторы:

a = Convert.ToInt32(Console.ReadLine());

b = Convert.ToInt32(Console.ReadLine());

Итак, метод ToInt32 осуществляет преобразование строки (возвращаемое значение Console.ReadLine()) в целое число. Здесь можно отметить две особенности. Во-первых, целый тип данных, на самом деле в C# реализован классом Int32 (отсюда название метода ToInt32). Возможность описывать переменные как int осталась только для синтаксической совместимости с C++. Во-вторых, следует отдать должное универсальности класса Convert. Он умеет преобразовывать значения любых 16 встроенных типов в значения любого из этих встроенных типов (т.е. несколько сотен вариантов преобразований). Для этого у класса Convert имеются 16 методов: ToInt32, ToDouble и т.д. Более того, каждый из этих методов имеет 16 вариантов, отличающихся друг от друга типом параметров – это явление называется перегрузкой метода.

Структура программы

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

Напомним, что главной структурной единицей программы на языке C++ была функция, а программа состояла из множества таких функций, среди которых обязательно должна быть функция main. Кроме этого на верхнем уровне можно было описывать глобальные переменные и собственные типы данных, такие как struct.

Идея создания программистом собственных типов данных в языке C# приобрела центральное место (как и в других объектно-ориентированных языках). По-прежнему это можно делать с помощью структурных типов struct. Однако еще более полноценную реализацию понятия тип удалось реализовать с помощью концепции классов.

Такие классы, как Console и Convert называются встроенными только по той причине, что они написаны другими программистами и включены в стандартный набор классов. Однако программист может создавать свои собственные классы, обеспечивая их необходимыми ему функциями-методами.

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

Есть еще один важный вопрос: если структура программы однородна и представляет множество классов, то с какого места начинается выполнение программы. Для этого в одном (и только в одном) из классов обязательно доложен быть определен метод Main (с большой буквы!). Таким образом, ошибкой будет и отсутствие метода Main и наличие нескольких методов Main.

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

Ответ на вопрос «что означает слово static в заголовке метода Main» вы узнаете позже, а на вопрос «зачем нужны параметры в методе Main» мы в нашем кратком курсе отвечать не будем – нельзя объять … сами знаете что.

Еще вопросы есть? По-крайней мере еще один важный вопрос должен остаться – что означает конструкция namespace в нашей программе.


Поделиться с друзьями:

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.03 с.