Программирование на С#

Особенности и принципы построения языка программирования С#. Основные конструкции языка и типы данных. Характеристика среды разработки Visual Studio 2010. Работа с базовыми элементами управления. Указания и задания для выполнения лабораторных работ.

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык русский
Дата добавления 11.12.2020
Размер файла 2,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

1

Программирование на С#

А.Ю. Демин, В.А. Дорофеев

Издательство

Томского политехнического университета

2013

Демин А.Ю., Дорофеев В.А.

Д36Программирование на C#: учебное пособие / А.Ю. Демин, В.А. Дорофеев; Томский политехнический университет. ? Томск: Изд-во Томского политехнического университета, 2013. - 134 с.

В пособии рассматривается введение в язык программирования С#; основные конструкции языка и типы данных; среда разработки Visual Studio 2010; работа с базовыми элементами управления; содержатся указания и задания для выполнения лабораторных работ.

Предназначено для студентов, обучающихся по направлениям 220400 «Управление в технических системах», 220700 «Автоматизация технологических процессов и производств», 221000 «Мехатроника и робототехника», 222000 «Инноватика», 230100 «Информатика и вычислительная техника».

Рецензенты

Доктор технических наук,

доцент кафедры «Комплексной информационной безопасности электронно-вычислительных систем», ТУСУР

Р.В. Мещеряков

Кандидат технических наук, доцент каф. «Программирования», ФПМК, ТГУ

О.И. Голубева

ЛАБОРАТОРНАЯ РАБОТА №1.ИЗУЧЕНИЕ СРЕДЫ РАЗРАБОТКИ VISUAL STUDIO

язык программирование с#

Цель лабораторной работы: изучить среду быстрой разработки приложений Visual Studio. Научится размещать и настраивать внешний вид элементов управления на форме.

Интегрированная среда разработчика Visual Studio

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

При запуске Visual Studio появляется начальная страница со списком последних проектов, а также командами Создать проект и Открыть проект. Нажмите ссылку Создать проект или выберите в меню Файл команду Создать проект, на экране появится диалог для создания нового проекта (рис. 1.1).

Рис 1.1. Диалог создания нового проекта.

Слева в списке шаблонов приведены языки программирования, которые поддерживает данная версия Visual Studio: убедитесь, что там выделен раздел Visual C#. В средней части приведены типы проектов, которые можно создать. В наших лабораторных работах будут использоваться два типа проектов:

· Приложение Windows Forms - данный тип проекта позволяет создать полноценное приложение с окнами и элементами управления (кнопками, полями ввода и пр.) Такой вид приложения наиболее привычен большинству пользователей.

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

Выберите в списке тип проекта «Приложение Windows Forms», в поле «имя» внизу окна введите желаемое имя проекта (например, MyFirstApp) и нажмите кнопку ОК. Через несколько секунд Visual Studio создаст проект и Вы сможете увидеть на экране картинку, подобную представленной на рис. 1.2.

Рис 1.2. Главное окно Visual Studio

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

Второй по важности объект - это окно свойств (2), в котором приведены все основные свойства выделенного элемента управления или окна. С помощью кнопки можно просматривать свойства элемента управления, а кнопка переключает окно в режим просмотра событий. Чтобы было удобнее искать нужные свойства, можно отсортировать их по алфавиту с помощью кнопки . Если этого окна на экране нет, его можно активировать в меню Вид > Окно свойств (иногда этот пункт вложен в подпункт Другие окна).

Сами элементы управления можно брать на панели элементов (3). Все элементы управления разбиты на логические группы, что облегчает поиск нужных элементов. Если панели нет на экране, её нужно активировать командой Вид > Панель элементов.

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

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

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

Программа на языке C# составляется как описание алгоритмов, которые необходимо выполнить, если возникает определенное событие, связанное с формой (например, щелчок «мыши» на кнопке - событие Click, загрузка формы - Load). Для каждого обрабатываемого в форме события, с помощью окна свойств, в тексте программы организуется метод, в котором программист записывает на языке C# требуемый алгоритм.

Настройка формы

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

Для настройки будущего окна приложения задаются свойства формы. Для задания любых свойств формы и элементов управления на форме используется окно свойств.

Новая форма имеет одинаковые имя (Name) и заголовок (Text) - Form1.

Для изменения заголовка щелкните кнопкой мыши на форме, окне свойств найдите и щелкните мышкой на строчке с названием Text. В выделенном окне наберите «Лаб. раб. N1. Ст. гр. 7А62 Иванов А. А». Для задания цвета окна используйте свойство BackColor.

Размещение элементов управления на форме

Для размещения различных элементов управления на форме используется панель элементов. Панель элементов содержит элементы управления, сгруппированные по типу. Каждую группу элементов управления можно свернуть, если она в настоящий момент не нужна. Для выполнения лабораторных работ потребуются элементы управления из группы Стандартные элементы управления.

Рис.1.3 Панель элементов

Щёлкните на элементе управления, который хотите добавить, а затем щёлкните в нужном месте формы - элемент появится на форме. Элемент можно перемещать по форме схватившись за него левой кнопкой мышки (иногда это можно сделать лишь за появляющийся при нажатии на элемент квадрат со стрелками ). Если элемент управления позволяет изменять размеры, то на соответствующих его сторонах появятся белые кружки, ухватившись за которые и можно изменить размер. После размещения элемента управления на форме, его можно выделить щелчком мыши и при этом получить доступ к его свойствам в окне свойств.

Размещение строки ввода

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

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

Выберите на панели элементов пиктограмму с названием TextBox, щелкните мышью в том месте формы, где вы хотите ее поставить. Захватив его мышкой, отрегулируйте размеры элемента управления и его положение. Обратите внимание на то, что теперь в тексте программы можно использовать переменную textBox1, которая соответствуют добавленному элементу управления. В этой переменной в свойстве Text будет содержаться строка символов (тип string) и отображаться в соответствующем окне TextBox.

С помощью окна свойств установите шрифт и размер символов отражаемых в строке TextBox (свойство Font).

Размещение надписей

На форме могут размещаться пояснительные надписи. Для нанесения таких надписей на форму используется элемент управления Label. Выберите на панели элементов пиктограмму с названием Label, щелкните на ней мышью. После этого в нужном месте формы щелкните мышью, появится надпись label1. Щелкнув на ней мышью, отрегулируйте размер и, изменив свойство Text в окне свойств, введите строку, например «Введите своё имя:», а также выберите размер символов (свойство Font).

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

Написание программы обработки события

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

Первый способ - создать обработчик для события по умолчанию (обычно это самое часто используемое событие данного элемента управления). Например, для кнопки таким образом создаётся обработчик события нажатия.

Написание программы обработки события нажатия кнопки

Поместите на форму кнопку, которая описывается элементом управления Button. С помощью окна свойств измените заголовок (Text) на слово «Привет» или другое по вашему желанию. Отрегулируйте положение и размер кнопки.

После этого два раза щелкните мышью на кнопке, появится текст программы:

private void button1_Click(object sender, EventArgs e)

{

}

Это и есть обработчики события нажатия кнопки. Вы можете добавлять свой код между скобками { }. Например, наберите:

MessageBox.Show("Привет, " + textBox1.Text + "!");

Написание программы обработки события загрузки формы

Второй способ создания обработчика события заключается в выборе соответствующего события для выделенного элемента на форме. При этом используется окно свойств и его закладка . Рассмотрим этот способ. Выделите форму щелчком по ней, чтобы вокруг неё появилась рамка из точек. В окне свойств найдите событие Load. Щелкнете по данной строчке дважды мышкой. Появится метод:

private void Form1_Load(object sender, EventArgs e)

{

}

Между скобками { } вставим текст программы:

BackColor = Color.AntiqueWhite;

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

Событие

Описание события

Activated

Форма получает это событие при активации

Load

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

KeyPress11

Возникает при нажатии кнопки на клавиатуре. Параметр e.KeyChar имеет тип char и содержит код нажатой клавиши (клавиша Enter клавиатуры имеет код #13, клавиша Esc - #27 и т. д.). Обычно это событие используется в том случае, когда необходима реакция на нажатие одной из клавиш

KeyDown

Возникает при нажатии клавиши на клавиатуре. Обработчик этого события получает информацию о нажатой клавише и состоянии клавиш Shift, Alt и Ctrl, а также о нажатой кнопке мыши. Информация о клавише передается параметром e.KeyCode, который представляет собой перечисление Keys с кодами всех клавиш, а информацию о клавишах-модификаторах Shift и др. можно узнать из параметра e.Modifiers

KeyUp

Является парным событием для KeyDown и возникает при отпускании ранее нажатой клавиши

Click

Возникает при нажатии кнопки мыши в области элемента управления

DoubleClick

Возникает при двойном нажатии кнопки мыши в области элемента управления

Важное примечание! Если какой-то обработчик был добавлен по ошибке или больше не нужен, то для его удаления нельзя просто удалить программный код обработчика! Сначала нужно удалить строку с именем обработчика в окне свойств на закладке . В противном случае программа может перестать компилироваться и даже отображать форму в дизайнере Visual Studio.

Запуск и работа с программой

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

Если в программе есть ошибки, то в окне Список ошибок появятся найденные ошибки, а программа обычно не запускается. Иногда, однако, может быть запущена предыдущая версия программы, в которой ещё нет последних изменений: чтобы этого не происходило, нужно в настройках Visual Studio установить опцию показа окна ошибок и запретить запуск при наличии ошибок (рис. 1.4 и 1.5).

Рис. 1.4. Опция показа сообщений об ошибках

Рис. 1.5. Опция отключения запуска предыдущей версии при ошибках построения

Для завершения работы программы и возвращения в режим проектирования формы не забудьте закрыть окно программы!

Динамическое изменение свойств

Свойства элементов на окне могут быть изменены динамически во время выполнения программы. Например, можно изменить текст надписи или цвет формы. Изменение свойств происходит внутри обработчика события (например, обработчика события нажатия на кнопку). Для этого используют оператор присвоения вида:

<имя элемента>.<свойство> = <значение>;

Например:

label1.Text = "Привет";

<Имя элемента> определяется на этапе проектирования формы, при размещении элемента управления на форме. Например, при размещении на форме ряда элементов TextBox, эти элементы получают имена textBox1, textBox2, textBox3 и т. д. Эти имена могут быть замены в окне свойств в свойстве (Name) для текущего элемента. Допускается использование латинских или русских символов, знака подчеркивания и цифр (цифра не должна стоять в начале идентификатора). Список свойств для конкретного элемента можно посмотреть в окне свойств, а также в приложении к данным методическим указаниям.

Если требуется изменить свойства формы, то никакое имя элемента перед точкой вставлять не нужно, как и саму точку. Например, чтобы задать цвет формы, нужно просто написать:

BackColor = Color.Green;

Выполнение индивидуального задания

Ниже приведено 15 вариантов задач. По указанию преподавателя выберите свое индивидуальное задание. Уточните условие задания, количество, наименование, типы исходных данных. Прочтите в Приложении 1 описание свойств и описание элементов управления Form, Label, TextBox, Button. С помощью окна свойств установите первоначальный цвет формы, шрифт выводимых символов.

Индивидуальные задания

1. Разместите на форме четыре кнопки (Button). Сделайте на кнопках следующие надписи: «красный», «зеленый», «синий», «желтый». Создайте четыре обработчика события нажатия на данные кнопки, которые будут менять цвет формы в соответствии с текстом на кнопках.

2. Разместите на форме две кнопки (Button) и одну метку (Label). Сделайте на кнопках следующие надписи: «привет», «до свидания». Создайте обработчики события нажатия на данные кнопки, которые будут менять текст метки на слова, написанные на кнопках. Создайте обработчик события создания формы (Load), который будет устанавливать цвет формы и менять текст метки на строку «Начало работы».

3. Разместите на форме две кнопки (Button) и одну метку (Label). Сделайте на кнопках следующие надписи: «скрыть», «показать». Создайте обработчики события нажатия на данные кнопки, которые будут скрывать или показывать метку. Создайте обработчик события создания формы (Load), который будет устанавливать цвет формы и менять текст метки на строку «Начало работы».

4. Разместите на форме три кнопки (Button) и одно поле ввода (TextBox). Сделайте на кнопках следующие надписи: «скрыть», «показать», «очистить». Создайте обработчики события нажатия на данные кнопки, которые будут скрывать или показывать поле ввода. При нажатии на кнопку «очистить» текст из поля ввода должен быть удален.

5. Разместите на форме две кнопки (Button) и одно поле ввода (TextBox). Сделайте на кнопках следующие надписи: «заполнить», «очистить». Создайте обработчики события нажатия на данные кнопки, которые будут очищать или заполнять поле ввода знаками «******». Создайте обработчик события создания формы (Load), который будет устанавливать цвет формы и менять текст в поле ввода на строку «+++++».

6. Разработайте игру, которая заключается в следующем. На форме размещены пять кнопок (Button). При нажатии на кнопку некоторые кнопки становятся видимыми, а другие - невидимыми. Цель игры - скрыть все кнопки.

7. Разработайте игру, которая заключается в следующем. На форме размещены четыре кнопки (Button) и четыре метки (Label). При нажатии на кнопку часть надписей становится невидимыми, а часть наоборот становятся видимыми. Цель игры - скрыть все надписи.

8. Разместите на форме ряд кнопок (Button). Создайте обработчики события нажатия на данные кнопки, которые будут делать неактивными текущую кнопку. Создайте обработчик события изменение размера формы (Resize), который будет устанавливать все кнопки в активный режим.

9. Разместите на форме ряд кнопок (Button). Создайте обработчики события нажатия на данные кнопки, которые будут делать неактивными следующую кнопку. Создайте обработчик события нажатия кнопки мыши на форме (Click), который будет устанавливать все кнопки в активный режим.

10. Разместите на форме три кнопки (Button) и одно поле ввода (TextBox). Сделайте на кнопках следующие надписи: «*****», «+++++», «00000». Создайте обработчики события нажатия на данные кнопки, которые будут выводить текст, написанный на кнопках, в поле ввода. Создайте обработчик события создания формы (Load), который будет устанавливать цвет формы и менять текст в поле ввода на строку «Готов к работе».

11. Разместите на форме ряд полей ввода (TextBox). Создайте обработчики события нажатия кнопкой мыши на данные поля ввода, которые будут выводить в текущее поле ввода его номер. Создайте обработчик события изменение размера формы (Resize), который будет очищать все поля ввода.

12. Разместите на форме поле ввода (TextBox), метку (Label) и кнопку (Button). Создайте обработчик события нажатия на кнопку, который будет копировать текст из поля ввода в метку. Создайте обработчик события нажатия кнопки мышки на форме (Click), который будет устанавливать цвет формы и менять текст метки на строку «Начало работы» и очищать поле ввода.

13. Разместите на форме поле ввода (TextBox), и две кнопки (Button) с надписями: «блокировать», «разблокировать». Создайте обработчики события нажатия на кнопки, которые будут делать активным или неактивным поле ввода. Создайте обработчик события нажатия кнопки мышки на форме (Click), который будет устанавливать цвет формы и делать невидимыми все элементы.

14. Реализуйте игру минер на поле 3x3 из кнопок (Button). Первоначально все кнопки не содержат надписей. При попытке нажатия на кнопку на ней либо показывается количество мин, либо надпись «мина!» и меняется цвет окна.

15. Разместите на форме четыре кнопки (Button). Напишите для каждой обработчик события, который будет менять размеры и местоположение на окне других кнопок.

Лабораторная работа №2. Линейные алгоритмы

Цель лабораторной работы: научиться составлять каркас простейшей программы в среде Visual Studio. Написать и отладить программу линейного алгоритма.

Структура приложения

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

Кроме понятия проект часто используется более глобальное понятие - решение (solution). Решение содержит один или несколько проектов, один из которых может быть указан как стартовый проект. Выполнение решения начинается со стартового проекта.

Таким образом, при создании простейшей C# программы в Visual Studio создается папка решения, в которой для каждого проекта создается подпапка проекта, а уже в ней будут создаваться другие подпапки с результатами компиляции приложения.

Проект - это основная единица, с которой работает программист. При создании проекта можно выбрать его тип, а Visual Studio создаст каркас проекта в соответствии с выбранным типом.

В предыдущей лабораторной работе мы попробовали создавать оконные приложения, или иначе Приложения Windows Forms. Примером другого типа проекта является привести проект консольного приложения.

По своим "внешним" проявлениям консольные напоминают приложения DOS, запущенные в Windows. Тем не менее, это настоящие Win32-приложения, которые под DOS работать не будут. Для консольных приложений доступен Win32 API, а кроме того, они могут использовать консоль - окно, предоставляемое системой, которое работает в текстовом режиме и в которое можно вводить данные с клавиатуры. Особенность консольных приложений в том, что они работают не в графическом, а в текстовом режиме.

Проект в Visual Studio состоит из файла проекта (файл с расширением .csproj), одного или нескольких файлов исходного текста (с расширением .cs), файлов с описанием окон формы (с расширением .designer.cs), файлов ресурсов (с расширением .resx), а также ряда служебных файлах.

В файле проекта находится информация о модулях, составляющих данный проект, входящих в него ресурсах, а также параметров построения программы. Файл проекта автоматически создается и изменяется средой Visual Studio и не предназначен для ручного редактирования.

Файл исходного текста - программный модуль предназначен для размещения текстов программ. В этом файле программист размещает текст программы, написанный на языке C#. Модуль имеет следующую структуру:

// Раздел подключенных пространств имен

using System;

// Пространство имен нашего проекта

namespace MyFirstApp

{

// Класс окна

public partial class Form1 : Form

{

// Методы окна

public Form1()

{

InitializeComponent();

}

}

}

В разделе подключения пространств имен (каждая строка которого располагается в начале файла и начинается ключевым словом using) описываются используемые пространства имён. Каждое пространство имён включает в себя классы, выполняющие определённую работу, например, классы для работы с сетью располагаются в пространстве System.Net, а для работы с файлами - в System.IO. Большая часть пространств, которые используются в обычных проектах, уже подключена при создании нового проекта, но при необходимости можно дописать дополнительные пространства имён.

Для того чтобы не происходило конфликтов имён классов и переменных, классы нашего проекта также помещаются в отдельное пространство имен. Определяется оно ключевым словом namespace, после которого следует имя пространства (обычно оно совпадает с именем проекта).

Внутри пространства имен помещаются наши классы - в новом проекте это класс окна, который содержит все методы для управления поведением окна. Обратите внимание, что в определении класса присутствует ключевое слово partial, это говорит о том, что в исходном тексте представлена только часть класса, с которой мы работаем непосредственно, а служебные методы для обслуживания окна скрыты в другом модуле (при желании их тоже можно посмотреть, но редактировать вручную не рекомендуется).

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

При компиляции программы Visual Studio создает исполняемые .exe-файлы в каталоге bin.

Работа с проектом

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

Сразу после создания проекта рекомендуется сохранить его в подготовленной папке: Файл > Сохранить всё. При внесении значительных изменений в проект следует еще раз сохранить проект той же командой, а перед запуском программы на выполнение среда обычно сама сохраняет проект на случай какого-либо сбоя. Для открытия существующего проекта используется команда Файл > Открыть проект, либо можно найти в папке файл проекта с расширением .sln и сделать на нём двойной щелчок.

Описание данных

Типы данных имеют особенное значение в С#, поскольку это строго типизированный язык. Это означает, что все операции подвергаются строгому контролю со стороны компилятора на соответствие типов, причем недопустимые операции не компилируются. Такая строгая проверка типов позволяет предотвратить ошибки и повысить надежность программ. Для обеспечения контроля типов все переменные, выражения и значения должны принадлежать к определенному типу. Такого понятия, как бестиповая переменная, допустимая в ряде скриптовых языков, в C# вообще не существует. Более того, тип значения определяет те операции, которые разрешается выполнять над ним. Операция, разрешенная для одного типа данных, может оказаться недопустимой для другого.

Рис.2.1 Структура типов данных

Целочисленные типы

В С# определены девять целочисленных типов: char, byte, sbyte, short, ushort, int, uint, long и ulong. Тип char может хранить числа, но чаще используется для представления символов. Остальные восемь целочисленных типов предназначены для числовых расчетов.

Некоторые целочисленные типы могут хранить как положительные, так и отрицательные значения (sbyte, short, int и long), другие же - только положительные (char, byte, ushort, uint и ulong).

Типы с плавающей точкой

Такие типы позволяют представлять числа с дробной частью. В С# имеются три разновидности типов данных с плавающей точкой: float, double и decimal. Первые два типа представляют числовые значения с одинарной и двойной точностью, вычисления над ними выполняются аппаратно и поэтому быстро. Тип decimal служит для представления чисел с плавающей точкой высокой точности без округления, характерного для типов float и double. Вычисления с использованием этого типа выполняются программно и поэтому более медленны.

Числа, входящие в выражения, C# по умолчанию считает целочисленными. Поэтому следующее выражение будет иметь значение 0, ведь если 1 нацело разделить на 2 то получится как раз 0:

double x = 1 / 2;

Чтобы этого не происходило, в подобных случаях нужно явно указывать тип чисел с помощью символов-модификаторов: f для float и d для double. Приведённый выше пример правильно будет выглядеть так:

double x = 1d / 2d;

Иногда в программе возникает необходимость записать числа в экспоненциальной форме. Для этого после мантиссы числа записывается символ «e» и сразу после него - порядок. Например, число 2,5•10-2 будет записано в программе следующим образом:

2.5e-2

Символьные типы

В С# символы представлены не 8-разрядным кодом, как во многих других языках программирования, а 16-разрядным кодом, который называется юникодом (Unicode). В юникоде набор символов представлен настолько широко, что он охватывает символы практически из всех естественных языков на свете.

Основным типом при работе со строками является тип string, задающий строки переменной длины. Тип string представляет последовательность из нуля или более симвоов в кодировке Юникод. По сути, текст хранится в виде последовательной доступной только для чтения коллекции объектов char.

Логический тип данных

Тип bool представляет два логических значения: «истина» и «ложь». Эти логические значения обозначаются в С# зарезервированными словами true и false соответственно. Следовательно, переменная или выражение типа bool будет принимать одно из этих логических значений.

Рассмотрим самые популярные данные - переменные и константы. Переменная - это ячейка памяти, которой присвоено некоторое имя и это имя используется для доступа к данным, расположенным в данной ячейке. Для каждой переменной задаётся тип данных - диапазон всех возможных значений для данной переменной. Объявляются переменные непосредственно в тексте программы. Лучше всего сразу присвоить им начальное значение с помощью знака присвоения «=» (переменная = значение):

int a; // Только объявление

int b = 7; // Объявление и инициализация

Для того чтобы присвоить значение символьной переменной, достаточно заключить это значение (т.е. символ) в одинарные кавычки:

char ch; // Только объявление

char symbol = 'Z'; // Объявление и инициализация

Частным случаем переменных являются константы. Константы - это переменные, значения которых не меняются в процессе выполнения программы. Константы описываются как обычная переменная, только с ключевым словом const впереди:

const int c = 5;

Ввод/вывод данных в программу

Рассмотрим один из способов ввода данных через элементы, размещенные на форме. Для ввода данных чаще всего используют элемент управления TextBox, через обращение к его свойству Text. Свойство Text хранит в себе строку введенных символов. Поэтому данные можно считать таким образом:

private void button1_Click(object sender,EventArgs e)

{

string s = textBox1.Text;

}

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

private void button1_Click(object sender, EventArgs e)

{

string s = textBox1.Text;

int a = int.Parse(s);

int b = a * a;

}

Важное примечание! В языках программирования в дробных числах чаще всего используется точка, например: «15.7». Однако в C# методы преобразования строк в числа (вроде double.Parse() или Convert.ToFloat()) учитывают региональные настройки Windows, в которых в качестве десятичной точки используется символ запятой (например, «15,7»). Поэтому в полях TextBox в формах следует вводить дробные числа с запятой, а не с точкой. В противном случае преобразование не выполнится, а программа остановится с ошибкой.

Перед выводом числовые данные следует преобразовать назад в строку. Для этого у каждой переменной существует метод ToString(), который возвращает в результате строку с символьным представлением значения. Вывод данных можно осуществлять в элементы TextBox или Label, использую свойство Text. Например:

private void button1_Click(object sender, EventArgs e)

{

string s = textBox1.Text;

int a = int.Parse(s);

int b = a * a;

label1.Text = b.ToString();

}

Арифметические действия и стандартные функции

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

· * - умножение;

· + - сложение;

· - - вычитание;

· / - деление;

· % - остаток от деления.

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

· Math.Sin(a) - синус;

· Math.Sinh(a) - гиперболический синус;

· Math.Cos(a) - косинус (аргумент задается в радианах);

· Math.Atan(a) - арктангенс (аргумент задается в радианах);

· Math.Log(a) - натуральный логарифм;

· Math.Exp(a) - экспонента;

· Math.Pow(x, y) - возводит переменную x в степень y;

· Math.Sqrt(a) - квадратный корень;

· Math.Abs(a) - модуль числа;

· Math.Truncate(a) - целая часть числа;

· Math.Round(a) - округление числа;

В тригонометрических функциях все аргументы задаются в радианах.

Пример написания программы

Задание: составить программу вычисления для заданных значений x, y, z арифметического выражения

.

Панель диалога программы организовать в виде, представленном на рис:

Рис 2.1. Внешний вид программы.

Для вывода результатов работы программы в программе используется текстовое окно, которое представлено обычным элементом управления. После установки свойства Multiline в True появляется возможность растягивать элемент управления не только по горизонтали, но и по вертикали. А после установки свойства ScrollBars в значение Both в окне появится вертикальная, а при необходимости и горизонтальная полосы прокрутки.

Информация, которая отображается построчно в окне, находится в массиве строк Lines, каждая строка которого имеет тип string. Однако нельзя напрямую обратиться к этому свойству для добавления новых строк, поскольку размер массивов в C# определяется в момент их инициализации. Для добавления нового элемента используется свойство Text, к текущему содержимому которого можно добавить новую строку:

textBox4.Text += Environment.NewLine + "Привет";

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

Работа с программой происходит следующим образом. Нажмите (щелкните мышью) кнопку «Выполнить». В окне textBox4 появляется результат. Измените исходные значения x, y, z в окнах textBox1-textBox3 и снова нажмите кнопку «Выполнить» - появится новые результаты.

Полный текст программы имеет следующий вид:

using System;

using System.Windows.Forms;

namespace MyFirstApp

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender,

EventArgs e)

{

// Начальное значение X

textBox1.Text = "3,4";

// Начальное значение Y

textBox2.Text = "0,74";

// Начальное значение Z

textBox3.Text = "19,43";

}

private void button1_Click(object sender,

EventArgs e)

{

// Считывание значения X

double x = double.Parse(textBox1.Text);

// Вывод значения X в окно

textBox4.Text += Environment.NewLine +

"X = " + x.ToString();

// Считывание значения Y

double y = double.Parse(textBox2.Text);

// Вывод значения Y в окно

textBox4.Text += Environment.NewLine +

"Y = " + y.ToString();

// Считывание значения Z

double z = double.Parse(textBox3.Text);

// Вывод значения Z в окно

textBox4.Text += Environment.NewLine +

"Z = " + z.ToString();

// Вычисляем арифметическое выражение

double a = Math.Tan(x + y) *

Math.Tan(x + y);

double b = Math.Exp(y - z);

double c = Math.Sqrt(Math.Cos(x*x) +

Math.Sin(z*z));

double u = a -b * c;

// Выводим результат в окно

textBox4.Text += Environment.NewLine +

"Результат U = " + u.ToString();

}

}

}

Если просто скопировать этот текст и заменить им то, что было в редакторе кода Visual Studio, то программа не заработает. Правильнее будет создать обработчики событий Load у формы и Click у кнопки и уже в них вставить соответствующий код. Это замечание относится и ко всем последующим лабораторным работам.

Выполнение индивидуального задания

Ниже приведено 15 вариантов задач. По указанию преподавателя выберите свое индивидуальное задание. Уточните условие задания, количество, наименование, типы исходных данных. В соответствии с этим установите необходимое количество окон TextBox, тексты заголовков на форме, размеры шрифтов, а также типы переменных и функции преобразования при вводе и выводе результатов. Для проверки правильности программы после задания приведен контрольный пример: тестовые значения переменных, используемых в выражении, и результат, который при этом получается.

Индивидуальные задания

1.

При x=14.26, y=-1.22, z=3.5 t=0.564849.

2.

При x=-4.5, y=0.75,z=0.845 u=-55.6848.

3.

При x=3.74, y=-0.825, z=0.16, v=1.0553.

4.

При x=0.4 ,y=-0.875, z=-0.475 w=1.9873.

5.

При x=-15.246, y=4.642, z=20.001 =-182.036.

6.

При x=16.55, y=-2.75, z=0.15 =-38.902.

7.

При x=0.1722, y=6.33, z=3.25 =-172.025.

8.

При x=-2.235, y=2.23, z=15.221 =39.374.

9.

При x=1.825, y=18.225, z=-3.298 =1.2131.

10.

При x=3.981, y=-1.625, z=0.512 a=1.26185.

11.

При x=6.251, y=0.827, z=25.001 b=0.7121.

12.

При x=3.251, y=0.325, z=0.466 c=4.025.

13. .

При x=17.421, y=10.365, z=0.828 f=0.33056.

14. .

При x=12.3, y=15.4, z=0.252 g=82.8257.

15. .

При x=2.444, y=0.869, z=-0.13 -0.49871.

Лабораторная работа №3. Разветвляющиеся алгоритмы

Цель лабораторной работы: научиться пользоваться элементами управления для организации переключений (RadioButton). Написать и отладить программу разветвляющегося алгоритма.

Логические переменные и операции над ними

Переменные логического типа описываются посредством служебного слова bool. Они могут принимать только два значения - False (ложь) и True (истина). Результат False (ложь) и True (истина) возникает при использовании операций сравнения > (больше), < (меньше), != (не равно), >= (больше или равно), <= (меньше или равно), == (равно). Описываются логические переменные следующим образом:

bool b;

В языке C# имеются логические операции, применяемые к переменным логического типа. Это операции логического отрицания (!), логическое И (&&) и логическое ИЛИ (||). Операция логического отрицания является унарной операцией. Результат операции ! есть False, если операнд истинен, и True, если операнд имеет значение ложь. Так,

!True > False (неправда есть ложь)

!False > True (не ложь есть правда)

Результат операции логическое И (&&) есть истина, только если оба ее операнда истинны, и ложь во всех других случаях. Результат операции логическое ИЛИ (||) есть истина, если какой-либо из ее операндов истинен, и ложен только тогда, когда оба операнда ложны.

Условные операторы

Операторы ветвления позволяют изменить порядок выполнения операторов в программе. К операторам ветвления относятся условный оператор if и оператор выбора switch.

Условный оператор if используется для разветвления процесса обработки данных на два направления. Он может иметь одну из форм: сокращенную или полную.

Форма сокращенного оператора if:

if (B) S;

где В - логическое или арифметическое выражение, истинность которого проверяется; S - оператор.

При выполнении сокращенной формы оператора if сначала вычисляется выражение B, затем проводится анализ его результата: если B истинно, то выполняется оператор S; если B ложно, то оператор S пропускается. Таким образом, с помощью сокращенной формы оператора if можно либо выполнить оператор S, либо пропустить его.

Форма полного оператора if:

if (B) S1; else S2;

где B - логическое или арифметическое выражение, истинность которого проверяется; S1, S2 - операторы.

При выполнении полной формы оператора if сначала вычисляется выражение B, затем анализируется его результат: если B истинно, то выполняется оператор S1, а оператор S2 пропускается; если B ложно, то выполняется оператор S2, а S1 - пропускается. Таким образом, с помощью полной формы оператора if можно выбрать одно из двух альтернативных действий процесса обработки данных.

Для примера, вычислим значение функции:

Указанное выражение может быть запрограммировано в виде

if (x <= a)

y = Math.Sin(x); if ((x > a) && (x < b))

y = Math.Cos(x); if (x >= b)

y = Math.Sin(x) / Math.Cos(x);

или с помощью оператора else:

if (x <= a)

y = Math.Sin(x);

else

if (x < b)

y = Math.Cos(x);

else

y = Math.Sin(x) / Math.Cos(x);

Важное примечание! В C-подобных языках программирования, к которым относится и C#, операция сравнения представляется двумя знаками равенства, например:

if (a == b)

Оператор выбора switch предназначен для разветвления процесса вычислений по нескольким направлениям. Формат оператора:

switch (<выражение>)

{

case <константное_выражение_1>:

[<оператор 1>];

<оператор перехода>;

case <константное_выражение_2>:

[<оператор 2>];

<оператор перехода>;

case <константное_выражение_n>:

[<оператор n>];

<оператор перехода>;

[default:

<оператор>;]

}

Замечание

Выражение, записанное в квадратных скобках, является необязательным элементом в операторе switch. Если оно отсутствует, то может отсутствовать и оператор перехода.

Выражение, стоящее за ключевым словом switch, должно иметь арифметический, символьный или строковый тип. Все константные выражения должны иметь разные значения, но их тип должен совпадать с типом выражения, стоящим после switch или приводиться к нему. Ключевое слово case и расположенное после него константное выражение называют также меткой case.

Выполнение оператора начинается с вычисления выражения, расположенного за ключевым словом switch. Полученный результат сравнивается с меткой case. Если результат выражения соответствует метке case, то выполняется оператор, стоящий после этой метки, за которым обязательно должен следовать оператор перехода: break, goto, return и т. д. При использовании оператора break происходит выход из switch и управление передается оператору, следующему за switch. Если же используется оператор goto, то управление передается оператору, помеченному меткой, стоящей после goto. Наконец, оператор return завершает выполнение текущего метода.

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

Пример использования оператора switch:

int dayOfWeek = 5;

switch (dayOfWeek)

{

case 1:

MessageBox.Show("Понедельник");

break;

case 2:

MessageBox.Show("Вторник");

break;

case 3:

MessageBox.Show("Среда");

break;

case 4:

MessageBox.Show("Четверг");

break;

case 5:

MessageBox.Show("Пятница");

break;

case 6:

MessageBox.Show("Суббота");

break;

case 7:

MessageBox.Show("Воскресенье");

break;

default:

MessageBox.Show("Неверное значение!");

break;

}

Поскольку на момент выполнения оператора switch в этом примере переменная dayOfWeek равнялась 5, то будут выполнены операторы из блока case 5.

В ряде случаев оператор switch можно заменить несколькими операторами if, однако не всегда такая замена будет легче для чтения. Например, приведённый выше пример можно переписать так:

int dayOfWeek = 5;

if (dayOfWeek == 1)

MessageBox.Show("Понедельник");

else

if (dayOfWeek == 2)

MessageBox.Show("Вторник");

else

if (dayOfWeek == 3)

MessageBox.Show("Среда");

else

if (dayOfWeek == 4)

MessageBox.Show("Четверг");

else

if (dayOfWeek == 5)

MessageBox.Show("Пятница");

else

if (dayOfWeek == 6)

MessageBox.Show("Суббота");

else

if (dayOfWeek == 7)

MessageBox.Show("Воскресенье");

else

MessageBox.Show("Неверное значение!");

Кнопки-переключатели

При создании программ в Visual Studio для организации разветвлений часто используются элементы управления в виде кнопок-переключателей (RadioButton). Состояние такой кнопки (включено - выключено) визуально отражается на форме, а в программе можно узнать его с помощью свойства Checked: если кнопка включена, это свойство будет содержать True, в противном случае False. Если пользователь выбирает один из вариантов переключателя в группе, все остальные автоматически отключаются.

Группируются радиокнопки с помощью какого-либо контейнера - часто это бывает элемент GroupBox. Радиокнопки, размещённые в разных контейнерах, образуют независимые группы.

Рис. 3.1. Группа радиокнопок

if (radioButton1.Checked)

MessageBox.Show("Выбрана функция: синус");

else if (radioButton2.Checked)

MessageBox.Show("Выбрана функция: косинус");

else if (radioButton1.Checked)

MessageBox.Show("Выбрана функция: экспонента");

Пример написания программы

Задание: ввести три числа - x, y, z. Вычислить

Создание формы

Создайте форму, в соответствии с рис. 3.2.

Рис 3.2. Окно лабораторной работы

Разместите на форме элементы Label, TextBox и Button. Поле для вывода результатов также является элементом TextBox с установленным в True свойством Multiline и свойством ScrollBars установленным в Both.

Создание обработчиков событий

Обработчики событий создаются аналогично тому, как и в предыдущих лабораторных работах. Текст обработчика события нажатия на кнопку «Пуск» приведен ниже.

private void button1_Click(object sender, EventArgs e)

{

// Получение исходных данных из TextBox

double x = Convert.ToDouble(textBox2.Text);

double y = Convert.ToDouble(textBox1.Text);

double z = Convert.ToDouble(textBox3.Text);

// Ввод исходных данных в окно результатов

textBox4.Text = "Результаты работы программы " +

"ст. Петрова И.И. " +

Environment.NewLine;

textBox4.Text += "При X = " + textBox2.Text +

Environment.NewLine;

textBox4.Text += "При Y = " + textBox1.Text +

Environment.NewLine;

textBox4.Text += "При Z = " + textBox3.Text +

Environment.NewLine;

// Вычисление выражения

double u;

if ((z - x) == 0)

u = y * Math.Sin(x) * Math.Sin(x) + z;

else

if ((z - x) < 0)

u = y * Math.Exp(Math.Sin(x)) - z;

else

u = y * Math.Sin(Math.Sin(x)) + z;

// Вывод результата

textBox4.Text += "U = " + u.ToString() +

Environment.NewLine;

}

Запустите программу и убедитесь в том, что все ветви алгоритма выполняются правильно.

Индивидуальные задания

По указанию преподавателя выберите индивидуальное задание из нижеприведенного списка. В качестве f(x) использовать по выбору: sh(x), x2, ex. Отредактируйте вид формы и текст программы, в соответствии с полученным заданием.

Усложнённый вариант задания для продвинутых студентов: с помощью радиокнопок (RadioButton) дать пользователю возможность во время работы программы выбрать одну из трёх приведённых выше функций.

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

Лабораторная работа №4. Циклические алгоритмы

Цель лабораторной работы: изучить простейшие средства отладки программ в среде Visual Studio. Составить и отладить программу циклического алгоритма.

Операторы организации циклов

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

К операторам цикла относятся: цикл с предусловием while, цикл с постусловием do while, цикл с параметром for и цикл перебора foreach. Рассмотрим некоторые из них.

Цикл с предусловием

Оператор цикла while организует выполнение одного оператора (простого или составного) неизвестное заранее число раз. Формат цикла while:

while (B) S;

где B - выражение, истинность которого проверяется (условие завершения цикла); S - тело цикла - оператор (простой или составной).

Перед каждым выполнением тела цикла анализируется значение выражения В: если оно истинно, то выполняется тело цикла, и управление передается на повторную проверку условия В; если значение В ложно - цикл завершается и управление передается на оператор, следующий за оператором S.

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

В качестве иллюстрации выполнения цикла while рассмотрим программу вывода целых чисел от 1 до n по нажатию кнопки на форме:

private void button1_Click(object sender, EventArgs e)

{

int n = 10; // Количество повторений цикла

int i = 1; // Начальное значение

while (i <= n) // Пока i меньше или равно n

{

MessageBox.Show(i.ToString()); // Показываем i

i++; // Увеличиваем i на 1

}

}

Цикл с постусловием

Оператор цикла do while также организует выполнение одного оператора (простого или составного) неизвестное заранее число раз. Однако в отличие от цикла while условие завершения цикла проверяется после выполнения тела цикла. Формат цикла do while:

do S while (B);

где В - выражение, истинность которого проверяется (условие завершения цикла); S - тело цикла - оператор (простой или блок).

Сначала выполняется оператор S, а затем анализируется значение выражения В: если оно истинно, то управление передается оператору S, если ложно - цикл завершается, и управление передается на оператор, следующий за условием B. Так как условие В проверяется после выполнения тела цикла, то в любом случае тело цикла выполнится хотя бы один раз.

В операторе do while, так же как и в операторе while, возможна ситуация зацикливания в случае, если условие В всегда будет оставаться истинным.

Цикл с параметром

Цикл с параметром имеет следующую структуру:

for (<инициализация>; <выражение>; <модификация>)

<оператор>;

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


Подобные документы

  • Разработка игры "Угадай персонажа", ее суть и содержание. Запоминание новых персонажей и вопросов, коррекция базы данных. Использование языка программирования С++ и среды разработки Microsoft Visual Studio 2010. Алгоритмы и методы, структура программы.

    курсовая работа [571,9 K], добавлен 14.07.2012

  • Понятие математического программирования. Класс как тип структуры, позволяющий включать в описание типа не только элементы данных, но и функции. Рассмотрение основных особенности языка программирования C++. Характеристика среды MS Visual Studio 2008.

    контрольная работа [318,0 K], добавлен 13.01.2013

  • Лаконичность, стандартный набор конструкций управления потоком выполнения, структур данных и обширный набор операций в основе языка программирования Си. Фортран как первый язык программирования с транслятором. Перевод программных кодов с Фортрана на Си.

    отчет по практике [77,4 K], добавлен 18.10.2012

  • Объектно-ориентированная технология создания программ. Среда разработки Visual Studio.NET. Особенности среды Microsoft Visual Studio 2010. Приложения C# для расчетов по формулам, консольный ввод-вывод. Форматирование значений данных. Программы с циклами.

    методичка [2,1 M], добавлен 11.09.2014

  • Разработка на языке программирования C# в среде Microsoft Visual Studio 2010 на базе Microsoft NET Framework 4 (4.5) программного средства, реализующего компилятор модельного языка программирования. Лексический, синтаксический и семантический анализатор.

    курсовая работа [1,3 M], добавлен 24.06.2013

  • Основы языка программирвоания C++. Элементы управления в Microsoft Visual C++. Алгоритмические конструкции языка программирования Visual C++ и базовые элементы управления. Глобальные константы и переменные. Управление программой с помощью клавиатуры.

    курсовая работа [1,7 M], добавлен 08.04.2015

  • Языки среды программирования Visual Studio. Стартовая страница интегрированной среды разработки. Окно New Project. Вкладка разработки формы. Перемещение и изменение размера кнопки. Прибавление программного кода к кнопке. Запуск и сохранение проекта.

    презентация [1,4 M], добавлен 29.04.2014

  • Проектирование игры "Жизнь" и ее реализация в среде разработки Visual Studio 2010, версия .Net Framework 4.0. Особенности языка программирования C#, основных принципов ООП на языке C#. Проектирование пользовательского интерфейса. Описание алгоритмов.

    курсовая работа [990,0 K], добавлен 18.04.2013

  • Понятие и общая характеристика языка программирования РНР, принципы и этапы его работы, синтаксис и ассоциируемые массивы. Обработка исключений в языке Java. Работа с базами данных с помощью JDBC. Изучение порядка разработки графического интерфейса.

    презентация [192,3 K], добавлен 13.06.2014

  • Язык программирования Visual Basic: краткая история возникновения, значение и общая характеристика. Изучение основных свойств Visual Basic, синтаксис языка. Обзор ключевых операторов Visual Basic, пользовательские процедуры и функции данного языка.

    контрольная работа [36,4 K], добавлен 23.07.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.