Программирование на C# для школьников

Первые программные проекты

Показывать лекцию целиком

На этом уроке мы создадим первые программные проекты. Проекты будем создавать на языке C# (произносится Си Шарп) в среде разработки программ Visual Studio.

Проект для лекции Hello.zip

Выбор языка программирования и среды разработки

Язык C# является современным, популярным, объектно-ориентированным языком программирования. Программы на этом языке можно разрабатывать в профессиональной среде разработки программных проектов – Visual Studio.

Почему выбран этот язык и эта среда разработки? Языков программирования много. В профессиональном программировании широко используются примерно десяток различных языков. При обучении информатики в школе также нет одного общепринятого языка и чаще всего используются такие языки как Pascal, Basic, C++, последнее время – Python.

Автор этого курса убежден, что для обучения программированию и выработки алгоритмического мышления главным языком – языком, на котором мы проектируем нашу программу, является естественный язык, для нас – русский язык. Сложность алгоритмизации в том, что трудно бывает понять, как придумать алгоритм, решающий поставленную задачу. Если такое понимание есть, то записать программу на конкретном языке программирования дело второстепенное. Конечно, конкретный язык программирования и среда разработки оказывают влияние на выработку профессионального стиля программирования. Язык C# и среда разработки Visual Studio являются подходящими кандидатами для достижения поставленных целей.

Как установить Visual Studio на своем компьютере?

Профессиональная среда разработки программных проектов Visual Studio, созданная фирмой Microsoft, постоянно обновляется. На момент написания этого текста, последней доступной для свободного использования версией является Visual Studio 2017. Однако, все примеры нашего курса ориентированы на общедоступную версию Visual Studio 2015 Community. Поэтому рекомендуется установить на своем компьютере именно эту версию. Надежнее всего скачать ее с сайта Microsoft – download.microsoft.com, выбрав пункт меню – Developer Tools и в окне поиска задать "Visual Studio 2015 download", далее следовать инструкциям.

На рис.1 показана начальная страница Visual Studio 2015. На моем компьютере установлена профессиональная версия студии – Enterprise. Но отличие от общедоступной версии Community незначительно. Меню начальной страницы позволяет:

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

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

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

    Visual Studio – это открытая программная среда, в которой можно создавать проекты на разных языках. В версии Community, которую, надеюсь, вы уже установили на своем компьютере, можно создавать проекты на таких языках, как C++, C#, Python, Visual Basic, F#. Как было сказано в нашем курсе мы будем создавать проекты на языке C#. В рамках нашего курса мы будем создавать проекты двух типов – Windows Forms и Console.

    Если в начальной странице выбрать пункт меню "Создать проект", то открывается окно, показанное на рис. 2, позволяющее выбрать тип проекта. На рисунке можно видеть, что для проекта выбран язык C#, тип проекта – приложение Windows Forms.

    На этом этапе крайне важно также задать правильные установки в окнах, показанных в конце рисунка. В одном из трех окон нужно задать папку, в которой будут размещаться файлы проекта. В данном случае файлы проекта будут размещаться на диске E, в папке "Уроки программирования\CSharpProjects". В другом окне задается имя проекта – WindowsFormsHello. Еще в одном окне задается имя Решения – Hello. Приведенные тексты заменили значения по умолчанию, появляющиеся в этих окнах. При создании проекта всегда следует заменять значения по умолчанию, выбираемые средой разработки, на значения, отражающие специфику строящегося проекта.

    Решение (Solution) - это контейнер, в который помещаются проекты. В нашем случае в Решение Hello мы поместим два проекта, одним из которых является создаваемый проект WindowsFormsHello.

    Щелчок по кнопке OK, показанной на рис. 2, приведет к созданию заготовки проекта, соответствующей специфике выбранного типа проекта. Созданный автоматически проект открывается в среде разработки.

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

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

    Мы сейчас кратко опишем назначение четырех окон, показанных на рисунке. Основное окно – самое большое и центральное окно на рисунке, - предназначено для работы на этапе визуального проектирования интерфейса проекта, когда на форме размещаются элементы управления. В этом же окне ведется работа с кодом проекта. Слева от этого окна расположено окно "Панель элементов". На панели расположены различные элементы управления, собранные в группы. Эти элементы можно перетаскивать на форму при проектировании интерфейса. Если окно панели закрыто, то его нетрудно открыть, выбрав значок с изображением чемоданчика с инструментами.

    Справа показано окно "Обозреватель Решений". В нем отображается Решение и встроенные в него проекты. Для проекта показана его структура – элементы, составляющие проект.

    Ниже этого окна открыто окно "Свойства". Если выбрать какой - либо объект - элемент проекта или элемент интерфейса, то в этом окне отображаются свойства объекта, которые можно изменять. В этом же окне отображаются события, которые можно включать или выключать для выбранного объекта.

    Проекты типа Windows Forms позволяют реализовать принцип визуального событийно-управляемого программирования.

    Предлагаемый стиль программирования называется визуальным, не только потому что интерфейс можно создавать визуально, но и потому что пользователь видит элементы управления и может управлять ими.

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

    Программист на этапе проектирования включает некоторые события у элементов управления и создает для них "обработчики событий" - программный код, который начинает выполняться, когда у того или иного объекта возникло событие, инициированное пользователем, для которого предусмотрительно написан "обработчик события".

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

    Проект Hello типа Windows Forms

    В нашем первом проекте Hello используются три элемента управления:

  • Командная кнопка (Button). Этот элемент управления, как правило, задает некоторую команду. Когда пользователь нажимает кнопку, у объекта возникает событие Click (щелчок по кнопке). Обработчик этого события, написанный программистом, выполняет соответствующую команду.
  • Текстовое окно (textBox). Эти окна используются как для ввода, так и для вывода информации. В это окно пользователь может вводить некоторый текст, передавая программе некоторую исходную информацию. Обработчик события в ответ на действия пользователя может в это окно выводить некоторое сообщение, информирующие пользователя.
  • Метка (Label). Этот элемент управления содержит некоторый текст, задаваемый при проектировании интерфейса. Чаще всего, метки задают некоторое описание, например, сопровождают каждое текстовое окно, подсказывая пользователю, какой именно текст он должен вводить в окно или указывая, что это окно предназначено для вывода сообщений.
  • Перейдем к описанию сценария "Приветствия". По сценарию в нашем проекте возможно выполнение двух команд. По одной из них компьютер выводит общее приветствие в специальное текстовое окно, предназначенное для вывода сообщений. Другая команда позволяет вывести персональное приветствие, используя имя пользователя, указанное им в текстовом окне, спроектированном для задания имени.

    На рис. 4 показан интерфейс проекта, созданный для реализации указанного сценария.

    Для реализации задуманного сценария мы поместили в форму, созданную автоматически для данного типа проекта, 7 элементов управления – три метки, два текстовых окна и две командные кнопки. Одна из меток задает заголовок проекта, две другие поясняют содержимое текстовых окон. Командные кнопки позволяют выполнять команды предполагаемого сценария.

    Для элементов управления установили подходящие свойства. Окнам и кнопкам дали "правильные" имена. Заметьте, именование объектов, - задание содержательных имен – важная составляющая профессионального стиля программирования. У метки, содержащей текст заголовка, выбрали подходящие свойства, чтобы текст заголовка смотрелся красиво. У командных кнопок включили событие "Click".

    На рис. 4 показано состояние, полученное после щелчка пользователя по кнопке Hello, когда в окно приветствия выводится текст общего приветствия. В окне, предназначенном для задания имени, пользователь ввел свое имя. Если в данном состоянии пользователь щелкнет по другой командной кнопке – Hello You, то в окне приветствия появится текст персонального приветствия пользователю с именем Владимир. Если ввести другое имя, то соответственно изменится и текст персонального приветствия.

    С чего начинается проектирование интерфейса?

    Обычно проектирование начинается с изменения размеров формы, созданной по умолчанию. Форму расширяют по горизонтали и вертикали, придавая нужные размеры в зависимости от решаемой задачи, помня, что интерфейс должен быть интуитивно понятным для пользователя. Менять размеры достаточно просто, растягивая или сжимая) форму, потянув стрелку в специально встроенных угловых или срединных точках формы. Визуальное изменение размеров однозначно отображается в свойстве Size объекта "форма" - ширина формы (Width) и высота формы (Height). Конечно вместо визуального изменения размеров можно задать значения указанных свойств. Эффект будет тот же.

    Далее я, обычно, размещаю в начале формы метку – объект Label, в которой задаю текст, характеризующий задачу, решаемую пользователем. В нашем примере – это метка с текстом "проект Hello". Чтобы надпись выглядела красиво, изменяю свойство Font этого объекта.

    Далее в нашем примере в соответствии со сценарием поместил на форму командную кнопку – объект Button. Изменим, как положено, свойства этого объекта:

  • Надпись на кнопке (Hello);
  • Имя объекта (buttonHello);
  • Включим событие Click.
  • На рис. 5 показано состояние формы и свойства объекта buttonHello в результате выполнения указанных действий.

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

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

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

    Код обработчиков событий

    Согласно сценарию, обработчик события Click командной кнопки buttonHello должен выводить текст общего приветствия. В интерфейсе для вывода приветствия спроектировано текстовое окно – объект textbox, которому дано имя "textBoxHello". Обработчик события может оперировать с этим объектом и, в частности, менять его свойства. Код, который нужно написать в обработчике понятен, - нужно задать значение свойства "Text" объекта "textBoxHello". Вот этот код:

     private void buttonHello_Click(object sender, EventArgs e) { textBoxHello.Text = "Привет будущим светилам информатики!" + "\r\n" + "Всегда рад работать с Вами, " + "\r\n" + "Ваш компьютер."; }

    Дадим некоторые пояснения к этому примеру кода, иллюстрирующего работу с текстовыми данными. Любой текст, заключенный в кавычки, в языке C# рассматривается как константа типа string. Константа "\r\n" задает перенос текста на следующую строку.

    Операция "+" в языке C# "перегружена" - это означает, что она по-разному выполняется в зависимости от типа операндов. Для целых чисел – объектов типа int – эта операция означает обычное сложение целых. Для объектов типа string, как в данном случае, это операция выполняет сцепление строк, - к концу первой строки присоединяется строка, заданная вторым операндом.

    Согласно сценарию, обработчик второй командной кнопки buttonHelloYou задает персональное приветствие, учитывающее имя, введенное пользователем в окно textBoxName. Вот код этого обработчика, решающий поставленную задачу:

     private void buttonHelloYou_Click(object sender, EventArgs e) { string name; name = textBoxName.Text; textBoxHello.Text = "Привет, " + name + "!"; }

    Здесь в обработчике объявляется переменная (объект) с именем name типа string. Эта переменная присваивается значение, заданное свойством "Text" текстового окна textBoxName.

    Затем эта переменная используется при выводе приветствия в окно Hello.

    Проект Hello консольного типа (Console)

    Добавим в наше Решение Hello новый проект консольного типа. Как это сделать? Просто! В окне "Обозреватель Решения" щелкнем правой кнопкой на имени Решения Hello и из выпадающего контекстного меню выберем пункт "Добавить → Создать проект". На этапе создания проекта выберем тип Console и изменим имя проекта по умолчанию на имя "ConsoleApplicationHello".

    Заготовка проекта такого типа содержит метод с именем Main. Этот метод начинает выполняться при запуске проекта на выполнение. Именно в его тело (между фигурными скобками) следует добавить программный код, реализующий сценарий приветствия.

    На рис. 6 показано состояние среды программирования после добавления в Решение консольного проекта. В тело метода Main уже добавлен код, реализующий сценарий приветствия.

    В чем главное отличие консольного проекта от проекта Windows Forms? Как было сказано ранее, Windows Forms приложение реализует стратегию событийно-управляемого программирования. Здесь инициатором событий является пользователь приложения. От его действий зависит, какие события будут появляться, что приводит к выполнению программного кода соответствующих обработчиков событий.

    В консольном приложении действиями пользователя руководит программа. Выполнение всегда начинается с запуска созданного по умолчанию метода с именем Main (главный метод). Код этого метода дает решение поставленной задачи. В нашем примере код реализует сценарий приветствия, выводя на консоль вначале общее приветствие, затем приглашая пользователя ввести свое имя, после чего на консоль выводится персональное приветствие, учитывающее имя пользователя. Рассмотрим чуть подробнее код метода Main:

     static void Main(string[] args) { //Приветствие Console.WriteLine("Привет, будущим светилам информатики! "); Console.WriteLine("Всегда рад работать с Вами,"); Console.WriteLine("Ваш компьютер."); Console.WriteLine("Введите ваше имя:"); string name = Console.ReadLine(); Console.WriteLine("Привет, " + name + "!"); } 

    Для вывода приветствия на консоль (роль консоли играет в данном случае экран компьютера) используется метод с "говорящим" названием WriteLine (Записать строку). Этот же метод используется для управления действиями пользователя, приглашая его ввести с клавиатуры свое имя, которое будет также отображаться на консоли. Для чтения текста, введенного пользователем, используется метод с естественным именем ReadLine (Прочитать строку).

    Близнецы – братья методы WriteLine и ReadLine являются методами специального класса Console, предназначенного для поддержки ввода – вывода и других операций в консольных приложениях.

    В консольном приложении также, как и в Windows приложении, объявляется переменная с именем name типа string. Эта переменная получает значение, заданное пользователем и используется при выводе персонального приветствия.

    Итоги

    В этом уроке состоялось первое знакомство со студией разработки программных проектов. На простом примере показано, как строятся проекты двух основных типов – консольный проект и Windows Forms проект.

    Возможно, с точки зрения программирования самое важное, что в этих проектах показано, как можно вводить и выводить текстовые данные – данные типа string. В консольном проекте для ввода - вывода используются методы WriteLine и ReadLine класса Console. В Windows проектах ввод – вывод реализуется использованием свойств объектов интерфейса, таких как текстовые окна – textBox. В проектах показано, как объявлять и присваивать значения строковым переменным типа string.

    Все эти знания будут широко использоваться в последующих проектах.

    Задания

    Задание 1

    Используя доступный образец проекта, постройте с нуля свой вариант Решения, содержащий два проекта – консольный и Windows. При проектировании интерфейса Windows проекта поэкспериментируйте со свойствами объектов интерфейса.

    Задание 2

    Постройте Windows проект, включив в приветствие дополнительную информацию, запросив у пользователя его возраст. В индивидуальном приветствии, укажите не только имя пользователя, но и его возраст, например, в виде следующего текста: "Привет, Игорь! Вам 20 лет".

    Сложность этого задания, требующая знания приемов программирования, далеко выходящих за пределы этого урока, в том, что в русском языке последнее слово в приветствии зависит от возраста. Приветствие может заканчиваться фразой "Вам 21 год" или "Вам 22 года". Провести анализ количества лет, введенного пользователем, и построить правильную фразу на русском языке совсем не просто. Можно, конечно, избежать решения этой проблемы и построить фразу о возрасте пользователя более простым способом. Попробуйте справиться с этим заданием.

    Вернуться к учебному плану