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

Введение в программирование на языке C#

.pdf
Скачиваний:
75
Добавлен:
23.02.2015
Размер:
1.13 Mб
Скачать

УрФУ Кафедра «Автоматизированные электрические системы»

ВведениевпрограммированиенаязыкеС#

Методические указания по дисциплине «Информатика» и для студентов дневной формы обучения специальностей

140 203 - Релейная защита и автоматизация электроэнергетических систем

140 204 - Электрические станции,

140 205 - Электроэнергетические системы и сети,

Екатеринбург 2011

УДК 004. 43

Составитель: О.М.Котов Научный редактор - профессор, доктор техн. наук В.П.Обоскалов

ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С#: Методические указа-

ния / О.М.Котов. Екатеринбург: УрФУ, 2011. 26 с.

В методических указаниях приведены рекомендации по подготовке программ на языке C# в среде Microsoft Visual Studio 2008 в формате консольного приложения. Демонстрируются примеры управления стандартными устройствами ввода – вывода, типовые приёмы обработки числовой информации. Итоговый раздел содержит материал, способствующий выполнению курсовой работы.

Подготовлено кафедрой "Автоматизированные электрические системы"

Подписано в печать

Заказ

Формат 60 84 1/16

 

Бумага типографская

 

Офсетная печать

Усл.п.л.

Уч.-изд. л.

 

Тираж

Цена "С"

УрФУ 620002, г. Екатеринбург, ул. Мира, 19

ЗАО "Наука-Сервис" 620002, г. Екатеринбург, ул. Мира, 19

© УрФУ, 2011

2

Введение

Среда программирования Microsoft Visual Studio предназначена для разработки программных продуктов для платформы .NET Framework на целом спектре языков программирования, таких, как C++, VisualBasic, Jscript и других. Но наиболее органично возможности и преимущества новой платформы использует специально созданный для неё язык C#.

Несомненными достоинствами языка C# являются следующие:

Простота и лаконичность: много чего выброшено, но мало добавлено по сравнению с ближайшим «родственником» - языком С++;

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

Единообразие технологий разработки различных видов приложений:

язык полностью объектно- и компонентно-ориентированный.

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

Приложение консольного типа - это программа, которая запускается в окне «Командная строка», а для ввода с клавиатуры и вывода на экран использует мето-

ды класса System.Console.

I.Первая программа

Цель работы: изучение основных инструментов среды, подготовка и запуск простейшей программы, знакомство со встроенной справочной системой

Запуск среды и изучение элементов рабочего стола

С помощью ярлыка

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

Рисунок 1. Начальное состояние среды Visual С#

3

ЗАДАНИЕ 1. Добейтесь соответствия рабочего стола виду, изображённому на рисунке 1. Поместите в отчет эскиз окна и нанести на него команды, составляющие меню Файл, Правка, Вид, Окно с пояснениями об их предназначении.

Стандартными элементами управления приложениями, кроме меню, являются панели инструментов и дополнительные окна.

ЗАДАНИЕ 2. Добейтесь соответствия рабочего стола Вашего рабочего места виду, изображённому на рисунке 2. Поместите в отчет эскиз окна. Установите, какие панели инструментов присутствуют на рабочем столе. Добавьте на эскизе комментарий к каждому элементу управления.

Рисунок 2. Среда Visual Studio с минимальным набором элементов управления

Подготовка первого проекта

Организационно любая программная разработка в среде Visual Studio представляет собой иерархическую структуру следующего вида:

Описание в файле *.csproj

Решение

Описание в файле *.sln

 

 

 

 

Проект1

 

 

Проект2

 

 

проектN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Каталоги и файлы проекта1

Каталоги и файлы проекта2

 

Каталоги и файлы проектаN

Рисунок 3. Структура решения с проектами на языке C#

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

Для создания нового проекта в меню Файл выполняется команда Создать и подкоманда Проект (рисунок 4). Из имеющихся в системе шаблонов следует выбрать Консольное приложение, настроить необходимые параметры в полях

Имя (проекта), Расположение, Имя решения, а затем нажать клавишу ОК.

4

Рисунок 4. Окно для создания нового проекта После нажатия кнопки ОК среда создаст заготовку для проекта (Рисунок 4).

При этом в рабочем каталоге среды создаётся Новая папка с пустым содержимым.

Рисунок 5. Заготовка для первого проекта

ЗАДАНИЕ 3:

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

5

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

Создайте Решение1, состоящее из одного проекта на языке C#. Установите, какие пункты меню появились в среде . Отразите это в отчёте,

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

В результате структура и содержимое папки Работа1 должны соответствовать рисунку 6.

Рисунок 6. Файловая структура решения в приложении Проводник

ЗАДАНИЕ 4: Добейтесь соответствия структуры и содержимого папки Работа1 и рисунка 6 и продемонстрируйте результат преподавателю.

Вотчёте:

1.Изобразите структуру и состав рабочих папок в виде эскиза.

2.Прокомментируйте форматы и назначение сгенерированных системой файлов.

3.Определите размер файла-сборки (*.exe) .

ЗАДАНИЕ 5: Выполните модификацию заготовки в соответствии с рисунком 7, запустите её на выполнение с помощью соответствующих команд меню Отладка.

Вотчёте:

1.Проверьте и прокомментируйте особенности различных вариантов запуска.

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

Рисунок 7. Первая программа Небольшая коррекция Первой программы позволяет сделать приветствие адресным:

6

using System;

class ПерваяПрограмма

{

static void Main()

{

Console.WriteLine("Представьтесь!"); string s= Console.ReadLine();

Console.WriteLine("Здравствуйте, "+s+" !" );

}

}

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

ЗАДАНИЕ 6. С помощью внутреннего справочника среды (вызывается клавишей F1) заполните (в отчёте) таблицу по наиболее используемым методам класса

Console:

Имя метода

Назначение

Входные аргументы

Возвращаемое значение

ReadLine()

Read()

Write()

ЗАДАНИЕ 7(индивидуальное): Используя в качестве заготовки адресное приветствие, выполните один из вариантов его модификации (по указанию преподавателя):

1.В зависимости от того, введено ли одно имя, или имя с отчеством, сформируйте различные варианты обращения. Например, «Привет, <имя> !» и «Здравствуйте, <имя отчество> !».

2.В зависимости от введенного имени добавьте комплимент типа: «<имя>, ты сегодня на редкость сосредоточен !» ( для мужского имени), и «<имя>, прекрасно выглядишь! ». Считать, что женские имена оканчиваются на «а» или «я».

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

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

5.Посчитайте количество букв в имени и выведите это значение на экран.

6.Посчитайте количество гласных букв в имени и выведите это значение на эк-

ран.

7.Посчитайте количество согласных букв в имени и выведите это значение на экран.

8.Выведите на экран полученное с клавиатуры имя заглавными буквами.

9.Посчитайте сумму кодов в заданном имени и выведите это значение на экран.

10.Перед выводом на экран полученное с клавиатуры имя разверните в обратном порядке.

11.Разработайте программу простой аутентификации, используя в качестве пароля:

-количество букв имени;

-количество гласных букв имени;

-количество согласных букв имени;

7

-код первой буквы имени;

-код последней буквы имени.

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

II. Исследование встроенных типов

Цель работы: изучение возможностей встроенных типов данных

Введение

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

ЗАДАНИЕ 1: Объясните в отчёте (с помощью встроенной справочной системы) назначение, тип и порядок использования методов GetType() и ToString(), а также полей MinValue и MaxValue.

ЗАДАНИЕ 2: Для трёх указанных преподавателем типов разработайте пример использования элементов базовых классов Object и ValueType (с выводом значений на консольный экран), и заполните соответствующие строки таблицы (в отчёте). Пример продемонстрируйте преподавателю, поместите в отчёт его код и эскиз консольного окна.

Тип

Размер

Назначение

Диапазон

Системное

 

 

(бит)

 

изменения

название

1

sbyte

 

 

 

 

 

2

byte

 

 

 

 

 

3

short

 

 

 

 

 

4

ushort

 

 

 

 

 

5

char

 

 

 

 

 

6

int

 

 

 

 

 

7

uint

 

 

 

 

 

8

long

 

 

 

 

 

9

ulong

 

 

 

 

 

10

float

 

 

 

 

 

11

double

 

 

 

 

 

12

decimal

 

 

 

 

 

Встроенные типы для работы с датой и временем

Тип DateTime относится к простым (примитивным) типам и предназначен для хранения даты и времени в достаточно широком диапазоне. Для работы с времен-

8

ными интервалами обычно используется встроенный тип TimeSpan. И тот и другой тип относится к пространству имён System.

ЗАДАНИЕ 3: Для типов DateTime и TimeSpan разработайте пример, позволяющий заполнить следующую таблицу (в отчёт). Пример демонстрируется преподавателю и вместе с эскизом экрана также помещается в отчёт.

Тип

Назначение

Диапазон изменения

1

DateTime

 

 

 

 

TimeSpan

 

 

 

Пример DateTime1 демонстрирует некоторые возможности обсуждаемых типов.

using System;

using C = System.Console; class DateTime1

{

static void Main()

{

DateTime

d1 = new DateTime(2009, 1, 1),

d2 = DateTime.Now;

TimeSpan interval = d2 - d1;

C.WriteLine("Сегодня {0:d} день года",interval.Days);

}

}

ЗАДАНИЕ 4: Запустите пример DataTime1 на выполнение, в отчёте прокомментируйте использование:

Конструктора класса DateTime,

Свойства класса DateTime,

Операции класса TimeSpan,

Свойства класса TimeSpan.

ЗАДАНИЕ 5: Модифицируйте пример так, чтобы точку отсчёта можно было задавать с клавиатуры, а значение интервала получать (по указанию преподавателя) в:

часах,

секундах,

миллисекундах,

тиках.

Рассчитайте в указанной единице измерения сколько времени прошло, например, со дня Вашего зачисления в университет.

Работу модифицированного варианта продемонстрируйте преподавателю, листинг и эскиз консольного окна поместите в отчёт.

Исследование быстродействия процессора на операциях с плавающими типами данных

В примере DateTime2 определяется время, которое процессор затратит на выполнение некоторого количества операций с данными типа float.

9

using System;

using C = System.Console; class DateTime2

{ static void Main()

{float[] mass = new float[10000000]; Random gen = new Random();

float Сумма=0;

for (int i=0;i<mass.Length;i++)mass[i]=gen.Next(10)/10f; DateTime d1 = DateTime.Now;

for (int i = 0; i < mass.Length; i++) Сумма += mass[i]; DateTime d2 = DateTime.Now;

TimeSpan interval = d2 - d1;

C.WriteLine("Сумма элементов массива {0}" , Сумма); C.WriteLine("Время обработки {0:d} тиков",interval.Ticks);

}

}

ЗАДАНИЕ 6: Ознакомьтесь с листингом, запустите на выполнение. Опытным путём подберите такое количество элементов массива, чтобы интервал выполнения был > 100 000, но < 1 000 000 тиков (1тик = 100 нсек). Зафиксируйте это значение в отчёте.

ЗАДАНИЕ 7: Для заданного преподавателем вида обработки массива:

1.Расчёт среднеарифметического значения;

2.Определение среднегеометрического значения;

3.Расчёт дисперсии;

4.Расчёт среднеквадратичного отклонения;

5.Поиск наибольшего значения;

6.Поиск наименьшего значения;

7.Поиск заданного количества наибольших значений;

8.Поиск заданного количества наименьших значений;

9.Поиск значения с наибольшим отклонением от среднеарифметического;

10.Поиск значения с наименьшим отклонением от среднеарифметического;

11.Сумма элементов с чётными индексами;

12.Сумма элементов с нечётными индексами;

13.Количество элементов со значениями больше среднеарифметического;

14.Количество элементов со значениями меньше среднеарифметического;

15.Количество элементов со значениями больше среднегеометрического;

16.Количество элементов со значениями меньше среднегеометрического;

и количества элементов массива, найденного при выполнении ЗАДАНИЯ5, раз-

работайте программу для заполнения следующей таблицы:

Тип эле-

Количество

Количество опера-

Продолжитель-

Приблизитель-

ментов

элементов мас-

ций с плавающими

ность

выполне-

ная производи-

массива

сива

данными

ния

операции,

тельность про-

 

 

 

(тиков)

 

цессора, флопс

float

 

 

 

 

 

double

 

 

 

 

 

decimal

 

 

 

 

 

10