Язык С#

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    516,34 Кб
  • Опубликовано:
    2015-07-03
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Язык С#

ВВЕДЕНИЕ

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

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

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

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

1. ТЕОРЕТИЧЕСКОЕ ВВЕДЕНИЕ

.1 Алфавит языка С#

Алфавит (или множество литер) языка программирования С# составляют символы таблицы кодов ASCII. Алфавит С# включает:

• строчные и прописные буквы латинского алфавита (мы их будем называть буквами);

• цифры от 0 до 9 (назовем их буквами-цифрами);

• символ «_» (подчеркивание - также считается буквой);

• набор специальных символов: " { }, 1 [ ] + - %/ \; ' : ? < > = ! & # ~ *-

• прочие символы.

Алфавит С# служит для построения слов, которые в C++ называются лексемами. Различают пять типов лексем:

• идентификаторы;

• ключевые слова;

• знаки (символы) операций;

• литералы;

• разделители.

Идентификатор может включать латинские буквы и буквы национальных алфавитов, цифры и символ подчеркивания. Прописные и строчные буквы различаются, например, myname, myName и MyName - три различных имени. Первым символом идентификатора может быть буква или знак подчеркивания, но не цифра. Могут быть зарезервированные идентификаторы, которые имеют специальное значение для компилятора, например, include, main, int и т.д.

Часть идентификаторов С# входит в фиксированный словарь ключевых слов. Эти идентификаторы образуют подмножество ключевых слов (они так и называются ключевыми словами).

Прочие идентификаторы после специального объявления становятся именами. Имена служат для обозначения переменных, типов данных, функций. Чтобы создать переменную, вы должны задать тип переменной и затем дать этому типу имя. Вы можете проинициализировать переменную во время ее объявления или присвоить ей новое значение во время выполнения программы. В языке С# требуется, чтобы переменные были явно проинициализированы до их использования. Однако инициализировать каждую переменную необязательно, но необходимо присвоить ей значение до того, как она будет использована.

Существуют переменные, значение которых нельзя изменить(константы). Константы бывают трех видов: литералы, символические константы и перечисления.

В операторе присваивания: x=32. Число 32 является литеральной константой и его значение всегда равно 32 и его нельзя изменить.

Символические константы именуют постоянные значения. Определение символической константы происходит следующим образом:<тип> <идентификатор> = <значение>;

Перечисления (enumerations) являются альтернативой константам. Перечисление - это особый размерный тип, состоящий из набора именованных констант (называемых списком перечисления).

К знакам операций относится один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются. Например, в выражении а + b знак + является знаком операции, а а и b - операндами. Символы, составляющие знак операций, могут быть как специальными, например, &&, | и <, так и буквенными, такими как as или new.

Операции делятся на унарные, бинарные и тернарную по количеству участвующих в них операндов. Один и тот же знак может интерпретироваться по-разному в зависимости от контекста. Все знаки операций, за исключением [ ], ( ).и ? :, представляют собой отдельные лексемы. Для разделения используются скобки, точка, запятая. Ниже перечислены все знаки операций и разделители, использующиеся в С#:

{} [] (). . :: + - * / * % & | ˆ ! ˜ =

< > ? ++ -- && || « » == != <=>= += - = .*=

/= %= &= |= ˆ= <<= >>= ->

Существуют следующие виды операций:

Операции инкремента (++) и декремента (--), называемые также операциями увеличения и уменьшения на единицу, имеют две формы записи префиксную, когда знак операции записывается перед операндом, и постфиксную.

Операция new служит для создания нового объекта. Формат операции: new тип ( [ аргументы ] )

Арифметическое отрицание (унарный минус -) меняет знак операнда на противоположный. Стандартная операция отрицания определена для типов int, long, float, double и decimal.

Логическое отрицание (!) определено для типа boo!. Результат операции значение false, если операнд равен true, и значение true, если операнд равен false.

Поразрядное отрицание (~), часто называемое побитовым, инвертирует каждый разряд в двоичном представлении операнда типа int, uint, long или ulong.

Операция остатка от деления (%).

Также в языке С# очень часто используются управляющие символы, все используемые символы представлены в таблице 1.1

Управляющие символы

\a - Звуковой сигнал;

\b - Возврат на шаг назад;

\f - Перевод страницы;

\r - Возврат каретки;

\t - Горизонтальная табуляция;

\v - Вертикальная табуляция;

\\ - Обратная косая черта;

\’ - Апостроф

С# является языком со строгой типизацией. В нем необходимо объявлять тип всех создаваемых программных элементов (например, переменных, объектов, окон, кнопок и т. д.). Тип программного элемента сообщает компилятору о его размере (например, тип int показывает, что объект занимает 4 байта) и возможностях.

В С# типы делятся на две группы: базовые типы, предлагаемые языком, и типы, определяемые пользователем. Кроме того, типы С# разбиваются на две другие категории: размерные типы (типы по значению) и ссылочные типы.

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

Почти все базовые типы являются размерными типами. Исключение составляют типы Object и String. Все пользовательские типы, кроме структур, являются ссылочными. Дополнительно к упомянутым типам, язык С# поддерживает типы указателей, однако они используются только с неуправляемым кодом. Принципиальное различие между размерными и ссылочными типами состоит в способе хранения их значений в памяти.

Целые типы, а также символьный, вещественные и финансовый типы можно объединить под названием арифметических типов.

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

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

Тип decimal предназначен для денежных вычислений, в которых критичны ошибки округления. Величины типа decimal позволяют хранить 28-29 десятичных разрядов.

Чаще всего типы С# разделяют по способу хранения элементов на типы-значения и ссылочные типы.

Язык С# предлагает обычный набор базовых типов, представленных в таблице 1.1

Таблица 1.1 - Базовый набор типов данных

Тип

Размер в байтах

Тип .NET

Описание

Базовый тип

object


Object

Может хранить все что угодно, т.к. является всеобщим предком

Логический тип

bool

1

true или false

Целые типы

sbyte

1

SByte

Целое со знаком (от -128 до 127)

byte

1

Byte

Целое без знака (от 0 до 255)

short

2

Int16

Целое со знака (от -32768 до 32767)

ushort

2

UInt16

Целое без знака (от 0 до 65535)

int

4

Int32

Целое со знаком (от -2147483648 до 2147483647)

uint

4

UInt

Целое число без знака ( от 0 до 4 294 967 295)

long

8

Int64

Целое со знаком (от -9223372036854775808 до 9223372036854775807)

ulong

8

UInt64

Целое без знака (от 0 до 0fffffffffffffff)

Вещественные типы

Float

4

Single

Число с плавающей точкой двойной точности. Содержит значения приблизительно от 1.5*10-45 до 3.4*1038 c 7 значащими цифрами

double

8

Double

Число с плавающей точкой двойной точности. Содержит значения приблизительно от 5. 0*10-324 до 1.7*10308 c 15-16 значащими цифрами

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

char

2

Сhar

Символы Unicode

Строковый тип

string


String

Строка из Unicode-символов

Финансовый тип

decimal

12

Decimal

Число до 28 знаков с фиксированным положением десятичной точки. Обычно используется в финансовых расчетах. Требует суффикса <<m>> или <<М>>


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

Комментарии предназначены для записи пояснений к программе и формирования документации. Компилятор комментарии игнорирует. Внутри комментария можно использовать любые символы. В С# есть два вида комментариев: однострочные и многострочные. Однострочный комментарий начинается с двух символов прямой косой черты (//) и заканчивается символом перехода на новую строку, многострочный заключается между символами-скобками /* и */ и может занимать часть строки, целую строку или несколько строк. Комментарии не вкладываются друг в друга: символы // и /* не обладают никаким специальным значением внутри комментария.

1.2 Операторы языка С#

Операторы управляют процессом выполнения программы. Набор операторов языка С++ содержит все управляющие конструкции структурного программирования.

Составной оператор ограничивается фигурными скобками. Все другие операторы заканчиваются точкой с запятой.

Пустой оператор - ;

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

Составной оператор - {...}

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

Оператор обработки исключений

{ <операторы> }(<объявление исключения>) { <операторы> }(<объявление исключения>) { <операторы> }

...(<объявление исключения>) { <операторы> }

Условный оператор(<выражение>) <оператор 1> [else <оператор 2>]

{ case <константное выражение 1>: <операторы 1><константное выражение 2>: <операторы 2>

...<константное выражение N>: <операторы N>

[default: <операторы>]

}

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

Оператор цикла с предусловием(<выражение>) <оператор>

Оператор цикла с постусловием<оператор> while <выражение>;

В языке C++ этот оператор отличается от классической реализации цикла с постусловием тем, что при истинности выражения происходит продолжение работы цикла, а не выход из цикла.

Оператор пошагового цикла([<начальное выражение>];

[<условное выражение>];

[<выражение приращения>])

<оператор>

Тело оператора for выполняется до тех пор, пока условное выражение не станет ложным (равным 0).Начальное выражение и выражение приращения обычно используются для инициализации и модификации параметров цикла и других значений. Начальное выражение вычисляется один раз до первой проверки условного выражения, а выражение приращения вычисляется после каждого выполненияоператора. Любое из трех выражений заголовка цикла, и даже все три могут быть опущены (не забывайте только оставлять точки с запятой). Если опущено условное выражение, то оно считается истинным, и цикл становится бесконечным.

Оператор пошагового цикла в языке С++ является гибкой и удобной конструкцией, поэтому оператор цикла с предусловием while используется в языке С++ крайне редко, т.к. в большинстве случаев удобнее пользоваться оператором for.

Оператор разрыва;

Оператор разрыва прерывает выполнение операторов while, do, for и switch. Он может содержаться только в теле этих операторов. Управление передается оператору программы, следующему за прерванным. Если оператор разрыва записан внутри вложенных операторов while, do, for, switch, то он завершает только непосредственно охватывающий его оператор.

Оператор продолжения;

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

Оператор возврата[<выражение>];

Оператора возврата заканчивает выполнение функции, в которой он содержится, и возвращает управление в вызывающую функцию. Управление передается в точку вызывающей функции, непосредственно следующую за оператором вызова. Значение выражения, если она задано, вычисляется, приводится к типу, объявленному для функции, содержащей оператор возврата, и возвращается в вызывающую функцию. Если выражение опущено, то возвращаемое функцией значение не определено.

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

Ввод/вывод не является частью языка С++, а осуществляется функциями, входящими в состав стандартной библиотеки

1.3 Понятие классов и объектов

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

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

[атрибуты] [спецификаторы] class имя_класса [: предки] тело_класса.

Классом является специальный тип данных, включающий описание данных и описание функций (методов), которые могут быть выполнены над представителем класса - объектом.

Поле. Так называется член-переменная, содержащий некоторое значение. В ООП поля иногда называют данными объекта. К полю можно применять несколько модификаторов в зависимости от того, как вы собираетесь его использовать. В число модификаторов входят static, readonly и const.

Метод. Это реальный код, воздействующий на данные объекта (или поля). Все, используемые модификаторы класса представлены в таблице 1.2.

язык модификатор программа матрица

Таблица 1.2 - Модификаторы класса

Спецификатор

Описание

1

new

Используется для вложенных классов. Задает новое описание класса взамен унаследованного от предка. Применяется в иерархиях объектов

2

public

Доступ не ограничен

3

protected

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

4

internal

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

5

protected internal

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

6

private

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

7

abstract

Абстрактный класс. Применяется в иерархиях объектов

8

sealed

Бесплодный класс. Применяется в иерархиях объектов

9

static

Статический класс.


К элементам класса относятся:

Константы хранят неизменяемые значения, связанные с классом;

Поля содержат данные класса;

Методы реализуют действия, выполняемые классом или экземпляром;

Свойства определяют характеристики класса в совокупности со способами их задания и получения (методами записи и чтения);

Конструкторы выполняют действия по инициализации экземпляров или класса в целом;

Деструкторы определяют действия, выполняемые перед тем как объект будет уничтожен;

Индексаторы обеспечивают возможность доступа к элементам класса по их порядковому номеру;

Операции задают действия с объектами с помощью знаков операций;

Типы внутренние по отношению к классу типы данных.

Объекты класса создаются явным или неявным образом (программистом или системой). Для явного создания экземпляра используется операция new. Формат операции: new тип ( [ аргументы ]). Программа на С# состоит из взаимодействующих между собой классов. Программист создает экземпляр класса с помощью операции new, например:a = new Demo(); // создание экземпляра класса Demob = new Demo(); // создание другого экземпляра класса Demo.

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

1.4 Структура программного модуля на С#

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

Среда разработки обычно содержит:

текстовый редактор, предназначенный для ввода и корректировки текста программы;

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

средства отладки и запуска программ;

общие библиотеки, содержащие многократно используемые элементы программ;

справочную систему и другие элементы.

В эпоху стремительного развития Интернета важнейшими задачами при создании программ становятся:

переносимость и возможность выполнения на различных типах компьютеров;

безопасность и невозможность несанкционированных действий;

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

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

межъязыковое взаимодействие и возможность применять одновременно несколько языков программирования.

Любое приложение на языке C#, разрабатываемое в среде проектирования VisualStudio.NET, реализуется как отдельный проект.

Приложение на языке С# может состоять из нескольких модулей. Каждый модуль C# может содержать код нескольких классов .

Сама программа на C# состоит из классов, внутри которых описывают методы и данные. Описанные переменные непосредственно внутри класса, называются полями класса. Им автоматически присваивается так называемое «значение по умолчанию».

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

В C# любая переменная описана внутри какого-либо блока: класса, метода или блока внутри метода. Имя переменной должно быть уникальным в области ее действия. Область действия распространяется на вложенные в метод блоки.

2. ПРАКТИЧЕСКАЯ ЧАСТЬ

.1 Выполнение задания № 1 курсовой работы

ВАРИАНТ № 11. Заполнить матрицу 10´10 следующим образом:


Вывести заполненную матрицу на экран компьютера или на принтер. Найти сумму элементов матрицы, кратных 7, найти сумму квадратных корней чётных элементов матрицы, вывести полученные результаты.

Пояснение работы программы сделаем с помощью словесного описания алгоритма.

Алгоритм решения задания

Алгоритм реализуется с помощью одной процедуры void button1_Click(object sender, EventArgs e).

Инициализируем переменные int k = 0 и int f = 0.

Определяется массив целых чисел с именем а, состоящий из 10 строк и 10 столбцов - int[,] a = new int[10, 10].

Далее организуется цикл перебора строк с параметром i, от начального значения 0 до конечного значения 9 с шагом изменения 1 - for (int i = 0; i < 10; i++).

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

Внутрь этого цикла вложен цикл перебора столбцов с параметром j, от начального значения 0 до конечного значения 9 с шагом изменения 1 - for (int j = 0; j < 10; j++).

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

if (i < 5 && j < 5 ) a[i, j] = k++;(i >= 5 && i < 7 && j >= 5) a[i, j] = j+6-i;

if (i >= 7 && j >= 5) a[i, j] = f--;

Таким образом, осуществляется заполнение массива по заданному заданием правилу.

Далее необходимо вывести заполненную матрицу на экран компьютера.

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

Инициализируем переменные: int sumb7 = 0- сумма квадратов элементов, кратных 7, int kk3 = 0- количество элементов кратных 7, int amax = 0 - максимальный элемент среди кратных 7.

Далее организуется цикл перебора строк с параметром i, от начального значения 0 до конечного значения 9 с шагом изменения 1 - for (int i = 0; i < 10; i++).

Внутрь этого цикла вложен цикл перебора столбцов с параметром j, от начального значения 0 до конечного значения 9 с шагом изменения 1 - for (int j = 0; j < 10; j++).

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

if (a[i, j] > 7)= sumb7 + a[i, j] * a[i, j];((a[i, j] % 7 == 0) && a[i, j]!=0) kk7++;((a[i, j] > 7) && (a[i, j] % 3 == 0) && (amax < a[i,j]))

amax = a[i, j];

Далее следует вывод на экран обработанной информации.

Описания используемых переменных были приведены в процессе описания алгоритма.

Рис. 2.1 - Контрольный пример1

Контрольный пример выполнения задания представлен на рис. 2.1. и рис. 2.2.

Рис. 2.2 - Контрольный пример1

2.2 Выполнение задания № 2 курсовой работы

Вариант 11. Составить программу нахождения первого отрицательного члена последовательности: an = (20n - n3)/n!, n=1,2,3,…. Найти сумму всех положительных членов последовательности и определить корень квадратный из этой суммы. Вывести полученное значение на экран, а также номер первого отрицательного члена последовательности и его значение.

Задание вариантов № 12-16: Действительное число Х вводится с клавиатуры. Вычислить приближённое значение бесконечной суммы согласно заданию варианта. Нужное приближение считается полученным, если вычислена сумма нескольких первых слагаемых, и очередное слагаемое оказалось по модулю меньше 0,0001.

Алгоритм выполнения задания.

Пояснение работы программы сделаем с помощью блок-схемы алгоритма, приведенной на рис. 2.4.

Контрольный пример нахождения первого отрицательного члена последовательности приведен на рис 2.3.

Рис. 2.3 - Контрольный пример нахождения первого отрицательного члена последовательности.

Рис. 2.4 - Блок-схема нахождения первого отрицательного члена последовательности

2.3 Выполнение задания № 4 курсовой работы

Вариант 11. Составить программу на языке программирования Паскаль, вызывающую процедуру или функцию, позволяющую решить следующую задачу: даны две квадратные вещественные матрицы порядка 10х10. Вывести на экран квадрат той из них, у которой наименьший след (сумма диагональных элементов), считая, что такая матрица одна.

Алгоритм выполнения задания

Пояснение работы программы сделаем с помощью словесного описания.

Создаем статический метод static double min (double a, double b).

Инициализируем переменную double rez = 0.

Алгоритм реализуется с помощью одной процедуры void button1_Click(object sender, EventArgs e).

Инициализируем переменные double a = 0, double b= 0,double v=0, double u = 0, double r = 0.

Затем открываем блок исключения try.

Внутри блока try… catch преобразуем строку а в вещественный тип данных. Таким же образом преобразуем строку b в вещественный тип данных. Для подсчета значения переменной u вызываем статический метод min и выводим результат подсчета на экран.

Затем с помощью метода min вычисляем значение переменной v и выводим на экран. Таким же образом подсчитываем значение переменной r и выводим на экран. После подсчета всех значений закрываем блок catch (Exception ex).

Рис. 2.5 - Контрольный пример решения поставленной задачи

Контрольный пример решения поставленной задачи приведен на рис. 2.5.

2.4 Выполнение задания № 5 курсовой работы

Вариант 11. Даны символьные файлы f и g. Определить, совпадают ли компоненты файла f с компонентами файла g. Если нет, то получить номер первой компоненты, в которой файлы f и g отличаются между собой. В случае, когда один из файлов имеет n компонент (n≥0) и является началом другого (более длинного) файла, ответом должно быть число n+1.

Алгоритм выполнения задания

Пояснение работы программы сделаем с помощью блок-схемы алгоритма, в данном случае здесь будет три блок-схемы, т.к выполнение программы выполняется на три события. (см рис.2.6-2.7).

Рис. 2.6 - Контрольный пример решения поставленной задачи

Контрольный пример решения поставленной задачи приведен на рис. 2.5.

Рис. 2.7 - Блок-схема на событие private void button1_Click(object sender, EventArgs e)


Рис. 2.8 - Блок-схема на событие private void button2_Click(object sender, EventArgs e)

Рис. 2.9 - Блок-схема на событие private void button3_Click(object sender, EventArgs e)

ЗАКЛЮЧЕНИЕ

При выполнении настоящей курсовой работы были освоены основные принципы разработки алгоритмов и программ, методы отладки и решения задач на ЭВМ в различных режимах. Так же были разобраны основы системного программирования и основы объектно-ориентированного подхода к программированию.

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

Инструментальной средой разработки программ стала MS Visual Studio 2010.

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

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

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

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

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

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

ставить задачу и разрабатывать алгоритм её решения;

использовать прикладные системы программирования;

разрабатывать основные программные документы;

работать с современными системами программирования, включая объектно-ориентированные;

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

методами и средствами разработки и оформления технической документации.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1.      Хейлсберг А., Торгерсен М., Вилтамут С., Голд П. Язык программирования С#. Классика Computers Science. - СПБ.: Питер, 2012.

.        Хорев П. Б. Технологии объектно-ориентированного программирования: Учебное пособие для вузов. - М.: Академия, 2008.

.        Орлов С. А. Технологии разработки программного обеспечения: Учебник для вузов. - 3-е изд., СПб.: Питер, 2010.

.        Мартин Р., Быстрая разработка программ: принципы, примеры, практика: Пер. с англ., М.: Издат. дом «Вильямс», 2009.

.        Побегайло А.П. С/С++ для студента. - СПБ.: БХВ-Петербург, 2006.

ПРИЛОЖЕНИЕ 1

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;Вариант_11_1

{partial class Form1 : Form

{Form1()

{();

}void button1_Click(object sender, EventArgs e)

{[,] a = new int[10, 10];(int i = 0; i < 10; i++)

{(int j = 0; j < 10; j++)

{(i >= j)

{[i, j] = (j + 1) * (j + 1);

}

{[i, j] = Convert.ToInt32((i + 1).ToString() + (i + 1).ToString());

}

}

}sek7 = 0;skkce = 0;s = "i=\\j= \t";(int j = 0; j < 10; j++) s = s + j.ToString() + "\t";= s + "\n";(int i = 0; i < 10; i++)

{= s + "\n" + i.ToString() + "\t";(int j = 0; j < 10; j++)

{(a[i, j] % 7 == 0)

{= sek7 + a[i, j];

}( a[i, j] % 2== 0)

{= skkce + Math.Sqrt(a[i, j]);

}= s + a[i, j].ToString() + "\t";

}= s + "\n";

}.Text = s;.AppendText("\nСумма квадратных корней чётных эле¬ментов матрицы " + skkce.ToString());.AppendText("\nСумма элементов матрицы, кратных 7 равна " + sek7.ToString());

}

}


using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;_11_2

{partial class Form1 : Form

{Form1()

{();

}void button1_Click(object sender, EventArgs e)

{.Clear();n = 1;a = (20 * n - n * n * n) / n;z = n;sp = 0;(a > 0)

{= sp + a;.AppendText("a" + n.ToString() + " = " + a.ToString() + "\n");= n + 1;= z * n;= (20 * n - n * n * n) / z;

}.AppendText("Индекс первого отрицательного " + n.ToString() + "\n");.AppendText("Значение первого отрицательного " + a.ToString() + "\n");

.AppendText("Корень квадратный суммы " + Math.Sqrt(sp) + "\n");

}

}

}

ПРИЛОЖЕНИЕ 3

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.Text.RegularExpressions;Вариант_11_4

{partial class Form1 : Form

{Form1()

{();

}[,] a = new int[10, 10];[,] b = new int[10, 10];n = 0;m = 0;n1 = 0;m1 = 0;int funk(int [,] a,int m,int n,int [,] b,int m1,int n1)

{sd = 0;(int i = 0; i < n; i++)

{= sd + a[i, i] + a[i, n - i - 1];

}sd2 = 0;(int i = 0; i < n1; i++)

{= sd2 + b[i, i] + b[i, n - i - 1];

}(sd < sd2)1;2;

}void button1_Click(object sender, EventArgs e)

{.Clear();s = "";[] MS; // массив строк

string razdel = @"[\s]+"; // разделитель любое число пробельных, знаков табуляции, перевода строки, новой страницыr = new Regex(razdel); // определить разделительi = 0;j = 0;

// чтение из блкнота и запись в массив

for (i = 0; i < richTextBox1.Lines.Length; i++)

{= richTextBox1.Lines[i];(i != 0 && richTextBox1.Lines[i - 1].Length == 0) goto стоп;

s = s.Trim();= r.Split(s); // разделить на подстроки

for (j = 0; j < MS.Length; j++)

{

{[i, j] = Convert.ToInt32(MS[j]);

}(Exception ex)

{

}

}

}

стоп:

//размерность массива= i - 1;= r.Split(richTextBox1.Lines[1]).Length;

//********************************= "";[] MS1; // массив строк

// string razdel = @"[\s]+"; // разделитель любое число пробельных, знаков табуляции, перевода строки, новой страницы

// Regex r = new Regex(razdel); // определить разделитель= 0;= 0;

// чтение из блкнота и запись в массив

for (i = 0; i < richTextBox2.Lines.Length; i++)

{= richTextBox2.Lines[i];(i != 0 && richTextBox2.Lines[i - 1].Length == 0) goto стоп1;

s = s.Trim();= r.Split(s); // разделить на подстроки

for (j = 0; j < MS1.Length; j++)

{

{[i, j] = Convert.ToInt32(MS1[j]);

}(Exception ex)

{

}

}

}

стоп1:

//размерность массива= i - 1;= r.Split(richTextBox1.Lines[1]).Length;

richTextBox3.AppendText("\nМатрица с наименьшим следом");

if (funk(a, m, n, b, m1, n1) == 1)

{(i = 0; i < m; i++)

{= "";(j = 0; j < n; j++)= s + a[i, j].ToString() + " ";.AppendText("\n" + s);

}[,] aa = new int[10, 10];(i = 0; i < m; i++)(j = 0; j < n; j++)[i, j] = a[i, j] * a[j, i];

richTextBox3.AppendText("\nКвадрат матрицы с наименьшим следом");

for (i = 0; i < m; i++)

{= "";(j = 0; j < n; j++)= s + aa[i, j].ToString() + " ";.AppendText("\n" + s);

}

}

{(i = 0; i < m1; i++)

{= "";(j = 0; j < n1; j++)= s + b[i, j].ToString() + " ";.AppendText("\n" + s);

}[,] bb = new int[10, 10];(i = 0; i < m1; i++)(j = 0; j < n1; j++)[i, j] = b[i, j] * b[j, i];

for (i = 0; i < m1; i++)

{= "";(j = 0; j < n1; j++)= s + bb[i, j].ToString() + " ";.AppendText("\n" + s);

}

}

}

}

}

ПРИЛОЖЕНИЕ 4

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.IO;Вариант_11_5

{partial class Form1 : Form

{Form1()

{();

}void button1_Click(object sender, EventArgs e)

{nom = 0;

button1.Visible = false;.Visible = true;

char chf;

char chg;.Clear();

{f = new FileStream("f.char", FileMode.Open);char_Reader_f = new BinaryReader(f);g = new FileStream("g.char", FileMode.Open);char_Reader_g = new BinaryReader(g);.AppendText("Длина f.char =" + f.Length.ToString() + "\n");.AppendText("Длина g.char =" + g.Length.ToString() + "\n");

{(true)

{= char_Reader_f.ReadChar();= char_Reader_g.ReadChar();(chf == chg)

{.AppendText(chg.ToString() + "=" + chf.ToString() + "\n");++;

};

}.AppendText("Число совпадающих компонент ="+nom.ToString());

}(Exception ex)

{

}_Reader_f.Close();

f.Close();

char_Reader_g.Close();.Close();

}(Exception ex)

{.AppendText("f.char или g.char не существует");

}

}void button2_Click(object sender, EventArgs e)

{.Visible = false;.Visible = true;

{char_Writer = new BinaryWriter(new FileStream("f.char", FileMode.Create));s = textBox1.Text;(int i = 0; i < s.Length; i++)

{_Writer.Write(s[i]);

}_Writer.Close();

}(Exception ex)

{.Text = ex.Message;

}

{char_Writer = new BinaryWriter(new FileStream("g.char", FileMode.Create));s = textBox2.Text;(int i = 0; i < s.Length; i++)

{_Writer.Write(s[i]);

}_Writer.Close();

}(Exception ex)

{.Text = ex.Message;

}

}

}

}

Похожие работы на - Язык С#

 

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