Язык программирования C#
Алфавит языка программирования C#. Лексемы языка программирования. Область действия переменных. Понятие классов и объектов. Структура программного модуля на С#. Управление процессом повторения вычислений. Продолжение цикла и модификация параметра цикла.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 10.03.2014 |
Размер файла | 557,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Курсовая работа
Дисциплина: «Программирование»
Специальность: 230100 «Информатика и вычислительная техника»
2013
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
1. ТЕОРЕТИЧЕСКОЕ ВВЕДЕНИЕ
1.1 Алфавит языка С#
1.2 Операторы языка С#
1.3 Понятие классов и объектов
1.4 Структура программного модуля на С#
2. ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Выполнение задания № 1 курсовой работы
2.2 Выполнение задания № 2 курсовой работы
2.3 Выполнение задания № 3 курсовой работы
2.4 Выполнение задания № 4 курсовой работы
2.5 Выполнение задания № 5 курсовой работы
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ 1
ПРИЛОЖЕНИЕ 2
ПРИЛОЖЕНИЕ 3
ПРИЛОЖЕНИЕ 4
ПРИЛОЖЕНИЕ 5
ВВЕДЕНИЕ
Язык С# как средство обучения программированию обладает рядом несомненных достоинств. Он хорошо организован, строг, большинство его конструкций логичны и удобны. Развитые средства диагностики и редактирования кода делают процесс программирования приятным и эффективным.
Немаловажно, что С# является не учебным, а профессиональным языком, предназначенным для решения широкого спектра задач, и в первую очередь -- в быстро развивающейся области создания распределенных приложений. Поэтому базовый курс программирования, построенный на основе языка С#, позволит студентам быстрее стать востребованными специалистами-профессионалами.
Целью исследования, проводимого в рамках настоящей курсовой работы, является разработка и реализация на языках высокого уровня алгоритмов решения задач, представленных в задании курсовой работы.
Объектами исследования настоящей курсовой работы являются методы и технологии разработки программных продуктов.
Предметами исследования настоящей курсовой работы являются методы, алгоритмы и приёмы разработки программ обработки двумерных массивов, файлов, строк.
Информационной базой исследования является учебная литература по информатике и программированию, техническая документация по языку С# инструментальной среды MS Visual Studio 2010.
1. ТЕОРЕТИЧЕСКОЕ ВВЕДЕНИЕ
1.1 Алфавит языка С#
Все тексты на языке пишутся с помощью его алфавита. В C# используется кодировка символов Unicode. Кодировкой, или кодовой таблицей (character set), называется соответствие между символами и кодирующими их числами. Кодировка Unicode позволяет представить символы всех существующих алфавитов одновременно. Каждому символу соответствует свой уникальный код.
Алфавит C# включает:
- буквы (латинские и национальных алфавитов) и символ подчеркивания (_), который употребляется наряду с буквами;
- цифры;
- специальные символы, например +, *, { и &;
- пробельные символы (пробел и символы табуляции);
- символы перевода строки.
Из символов составляются более крупные строительные блоки: лексемы, директивы препроцессора и комментарии.
Лексема (token) -- это минимальная единица языка, имеющая самостоятельный смысл. Существуют следующие виды лексем:
- имена (идентификаторы);
- ключевые слова;
- знаки операций;
- разделители;
- литералы (константы).
Лексемы языка программирования аналогичны словам естественного языка. Например, лексемами являются число 128 (но не его часть 12), имя Vasia, ключевое слово goto и знак операции сложения +. Далее мы рассмотрим лексемы подробнее.
Директивы препроцессора пришли в C# из его предшественника - языка С++. Препроцессором называется предварительная стадия компиляции, на которой формируется окончательный вид исходного текста программы. Например, с помощью директив (инструкций, команд) препроцессора можно включить или выключить из процесса компиляции фрагменты кода. Директивы препроцессора не играют в C# такой важной роли, как в С++.
Комментарии предназначены для записи пояснений к программе и формирования документации. Правила записи комментариев мы рассмотрим чуть позже.
Из лексем составляются выражения и операторы. Выражение задает правило вычисления некоторого значения. Например, выражение a + b задает правило вычисления суммы двух величин.
1.2 Операторы языка С#
Любое выражение, завершающееся точкой с запятой, рассматривается как оператор, выполнение которого заключается в вычислении выражения. Частным случаем выражения является пустой оператор; (он используется, когда по синтаксису оператор требуется, а по смыслу -- нет). Примеры:
i++; // выполняется операция инкремента
a *= b + c; // выполняется умножение с присваиванием
fun( i, k ); // выполняется вызов функции
while( true ); // цикл из пустого оператора (бесконечный)
Блок, или составной оператор, -- это последовательность описаний и операторов, заключенная в фигурные скобки. Блок воспринимается компилятором как один оператор и может использоваться всюду, где синтаксис требует одного оператора, а алгоритм -- нескольких. Блок может содержать один оператор или быть пустым.
Условный оператор if используется для разветвления процесса вычислений на два направления.
Формат оператора:
if ( логическое_выражение ) оператор_1; [ else оператор_2; ]
Сначала вычисляется логическое выражение. Если оно имеет значение true, выполняется первый оператор, иначе -- второй. После этого управление передается на оператор, следующий за условным. Ветвь else может отсутствовать.
Если в какой-либо ветви требуется выполнить несколько операторов, их необходимо заключить в блок. Блок может содержать любые операторы, в том числе описания и другие условные операторы, но не может состоять из одних описаний.
Примеры условных операторов:
if ( a < 0 ) b = 1; // 1
if ( a < b && ( a > d || a == 0 ) ) b++; else { b *= a; a = 0; } // 2
if ( a < b ) if ( a < c ) m = a; else m = c;
else if ( b < c ) m = b; else m = c; // 3
if ( b > a ) max = b; else max = a; // 4
Если требуется проверить несколько условий, их объединяют знаками логических условных операций. Например, выражение в примере 2 будет истинно в том случае, если выполнится одновременно условие a < b и одно из условий в скобках. Оператор в примере 3 вычисляет наибольшее значение из трех переменных.
Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений
Формат оператора:
switch ( выражение ){
case константное_выражение_1: [ список_операторов_1 ]
case константное_выражение_2: [ список_операторов_2 ]
...
case константное_выражение_n: [ список_операторов_n ]
[ default: операторы ]
}
Выполнение оператора начинается с вычисления выражения. Тип выражения чаще всего целочисленный (включая char) или строковый. Затем управление передается первому оператору из списка, помеченному константным выражением, значение которого совпало с вычисленным. Если совпадения не произошло, выполняются операторы, расположенные после слова default, а при его отсутствии управление передается следующему за switch оператору.
Каждая ветвь переключателя должна заканчиваться явным оператором перехода, а именно одним из операторов break, goto или return:
оператор break выполняет выход из самого внутреннего из объемлющих его операторов switch, for, while и do;
оператор goto выполняет переход на указанную после него метку, обычно это метка case одной из нижележащих ветвей оператора switch;
оператор return выполняет выход из функции, в теле которой он записан.
Операторы цикла используются для вычислений, повторяющихся многократно. Блок, ради выполнения которого и организуется цикл, называется телом цикла. Остальные операторы служат для управления процессом повторения вычислений: это начальные установки, проверка условия продолжения цикла и модификация параметра цикла. Один проход цикла называется итерацией.
Начальные установки служат для того, чтобы до входа в цикл задать значения переменных, которые в нем используются.
Проверка условия продолжения цикла выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием), либо после тела цикла (цикл с постусловием).
Параметром цикла называется переменная, которая используется при проверке условия продолжения цикла и принудительно изменяется на каждой итерации, причем, как правило, на одну и ту же величину. Если параметр цикла целочисленный, он называется счетчиком цикла.
Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue, return и goto. Передавать управление извне внутрь цикла запрещается.
Формат оператора:
while ( выражение ) оператор.
Выражение должно быть логического типа. Например, это может быть операция отношения. Если результат вычисления выражения равен true, выполняется простой или составной оператор. Эти действия повторяются до того момента, пока результатом выражения не станет значение false. После окончания цикла управление передается на следующий за ним оператор.
Выражение вычисляется перед каждой итерацией цикла. Если при первой проверке выражение равно false, цикл не выполнится ни разу.
Цикл с постусловием и имеет вид:
do оператор while выражение.
Сначала выполняется простой или составной оператор, образующий тело цикла, а затем вычисляется выражение (оно должно иметь тип bool). Если выражение истинно, тело цикла выполняется еще раз, и проверка повторяется. Цикл завершается, когда выражение станет равным false или в теле цикла будет выполнен какой-либо оператор передачи управления.
Этот вид цикла применяется в тех случаях, когда тело цикла необходимо обязательно выполнить хотя бы один раз.
Цикл с параметром имеет следующий формат:
for ( инициализация; выражение; модификации ) оператор.
Инициализация служит для объявления величин, используемых в цикле, и присвоения им начальных значений. В этой части можно записать несколько операторов, разделенных запятой, например:
программирование цикл язык вычисление
for ( int i = 0, j = 20; ...
int k, m;
for ( k = 1, m = 0; ...
Областью действия переменных, объявленных в части инициализации цикла, является цикл. Инициализация выполняется один раз в начале исполнения цикла.
Выражение типа bool определяет условие выполнения цикла: если его результат равен true, цикл выполняется.
Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификаций можно записать несколько операторов через запятую, например:
for ( int i = 0, j = 20; i < 5 && j > 10; i++, j-- )
Простой или составной оператор представляет собой тело цикла. Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!).
Для примера вычислим сумму чисел от 1 до 100:
int s = 0;
for ( int i = 1; i <= 100; i++ ) s += i.
Цикл foreach используется для просмотра всех объектов из некоторой группы данных, например, массива, списка или другого контейнера. Он будет рассмотрен в разделе «Оператор foreach».
В С# есть пять операторов, изменяющих естественный порядок выполнения вычислений:
- оператор безусловного перехода goto;
- оператор выхода из цикла break;
- оператор перехода к следующей итерации цикла continue;
- оператор возврата из функции return;
- оператор генерации исключения throw.
Эти операторы могут передать управление в пределах блока, в котором они использованы, и за его пределы. Передавать управление внутрь другого блока запрещается.
Оператор безусловного перехода goto используется в одной из трех форм:
goto метка;
goto case константное_выражение;
goto default.
В теле той же функции должна присутствовать ровно одна конструкция вида:
метка: оператор.
Оператор goto метка передает управление на помеченный оператор. Метка -- это обычный идентификатор, областью видимости которого является функция, в теле которой он задан. Метка должна находиться в той же области видимости, что и оператор перехода.
Вторая и третья формы оператора goto используются в теле оператора выбора switch. Оператор goto case константное_выражение передает управление на соответствующую константному выражению ветвь, а оператор goto default -- на ветвь default.
Оператор break используется внутри операторов цикла или выбора для перехода в точку программы, находящуюся непосредственно за оператором, внутри которого находится оператор break.
Оператор перехода к следующей итерации текущего цикла continue пропускает все операторы, оставшиеся до конца тела цикла, и передает управление на начало следующей итерации.
Оператор возврата из функции return завершает выполнение функции и передает управление в точку ее вызова. Синтаксис оператора:
return [ выражение ].
Тип выражения должен иметь неявное преобразование к типу функции. Если тип возвращаемого функцией значения описан как void, выражение должно отсутствовать.
1.3 Понятие классов и объектов
Класс является типом данных, определяемым пользователем. Он должен представлять собой одну логическую сущность, например, являться моделью реального объекта или процесса. Элементами класса являются данные и функции, предназначенные для их обработки.
Описание класса содержит ключевое слово class, за которым следует его имя, а далее в фигурных скобках -- тело класса, то есть список его элементов. Кроме того, для класса можно задать его базовые классы (предки) и ряд необязательных атрибутов и спецификаторов, определяющих различные характеристики класса:
[ атрибуты ] [ спецификаторы ] class имя_класса [ : предки ] тело_класса.
Обязательными являются только ключевое слово class, а также имя и тело класса. Тело класса -- это список описаний его элементов, заключенный в фигурные скобки. Список может быть пустым, если класс не содержит ни одного элемента. Таким образом, простейшее описание класса может выглядеть так:
class Demo {}.
Спецификаторы определяют свойства класса, а также доступность класса для других элементов программы. Возможные значения спецификаторов перечислены в таблице 1.1. Класс можно описывать непосредственно внутри пространства имен или внутри другого класса. В последнем случае класс называется вложенным.
Таблица 1.1.
Спецификаторы класса
№ |
Спецификатор |
Описание |
|
1 |
new |
Используется для вложенных классов. Задает новое описание класса взамен унаследованного от предка. Применяется в иерархиях объектов |
|
2 |
public |
Доступ не ограничен |
|
3 |
protected |
Используется для вложенных классов. Доступ только из элементов данного и производных классов |
|
4 |
internal |
Доступ только из данной программы (сборки) |
|
5 |
protected internal |
Доступ только из данного и производных классов или из данной программы (сборки) |
|
6 |
private |
Используется для вложенных классов. Доступ только из элементов класса, внутри которого описан данный класс |
|
7 |
abstract |
Абстрактный класс. Применяется в иерархиях объектов, рассматривается в главе 8 |
|
8 |
sealed |
Бесплодный класс. Применяется в иерархиях объектов, рассматривается в главе 8 |
|
9 |
static |
Статический класс. Введен в версию языка 2.0. Рассматривается в разделе «Конструкторы» |
Программист создает экземпляр класса с помощью операции new, например:
Demo a = new Demo(); // создание экземпляра класса Demo
Demo b = new Demo(); // создание другого экземпляра класса Demo.
Для каждого объекта при его создании в памяти выделяется отдельная область, в которой хранятся его данные. Кроме того, в классе могут присутствовать статические элементы, которые существуют в единственном экземпляре для всех объектов класса. Часто статические данные называют данными класса, а остальные -- данными экземпляра.
Функциональные элементы класса не тиражируются, то есть всегда хранятся в единственном экземпляре. Для работы с данными класса используются методы класса (статические методы), для работы с данными экземпляра -- методы экземпляра, или просто методы.
Ниже приведено краткое описание всех элементов класса:
- Константы класса хранят неизменяемые значения, связанные с классом.
- Поля содержат данные класса.
- Методы реализуют вычисления или другие действия, выполняемые классом или экземпляром.
- Свойства определяют характеристики класса в совокупности со способами их задания и получения, то есть методами записи и чтения.
- Конструкторы реализуют действия по инициализации экземпляров или класса в целом.
- Деструкторы определяют действия, которые необходимо выполнить до того, как объект будет уничтожен.
- Индексаторы обеспечивают возможность доступа к элементам класса по их порядковому номеру.
- Операции задают действия с объектами с помощью знаков операций.
- События определяют уведомления, которые может генерировать класс.
1.4 Структура программного модуля на С#
Программа на C# состоит из классов, внутри которых описывают методы и данные. Переменные, описанные непосредственно внутри класса, называются полями класса. Им автоматически присваивается так называемое «значение по умолчанию» -- как правило, это 0 соответствующего типа. Переменные, описанные внутри метода класса, называются локальными переменными. Их инициализация возлагается на программиста.
Так называемая область действия переменной, то есть область программы, где можно использовать переменную, начинается в точке ее описания и длится до конца блока, внутри которого она описана. Блок -- это код, заключенный в фигурные скобки. Основное назначение блока -- группировка операторов. В C# любая переменная описана внутри какого-либо блока: класса, метода или блока внутри метода. Имя переменной должно быть уникальным в области ее действия. Область действия распространяется на вложенные в метод блоки.
2. ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Выполнение задания № 1 курсовой работы
Вариант 23.
Дана вещественная матрица размером 4x6 (ее элементы нужно ввести с клавиатуры). Упорядочить ее строки по возрастанию их наибольших элементов. Вывести вектор наибольших элементов строк, первоначальную и полученную матрицу на экран. Для данной матрицы получить , где хi - наибольшее значение i - го столбца данной матрицы.
Пояснение работы программы сделаем с помощью словесного описания алгоритма.
Алгоритм решения задания
1) Алгоритм реализуется с помощью двух процедур void button1_Click(object sender, EventArgs e) и void button1_Click(object sender, EventArgs e).
2) Определяется массив целых чисел с именем im, состоящий из 4 строк и 6 столбцов - double[,] im = new double [4, 6].
3) Далее организуется цикл перебора строк с параметром i, от начального значения 0 до конечного значения 3 с шагом изменения 1 - for (int i = 0; i < 4; j++).
4) Затем следует описание двумерного массива, который формируется по закону, обозначенному в задании.
5) Внутрь этого цикла вложен цикл перебора столбцов с параметром j, от начального значения 0 до конечного значения 5 с шагом изменения 1 - for (int j = 0; i < 6; j++).
6) Внутри этих вложенных циклов перебора реализован оператор Random который произвольными значениями заполняет массив im[i, j] = r.Next(1, 20).
7) Далее необходимо вывести заполненную матрицу на экран компьютера.
8) Далее организуется цикл перебора строк с параметром i, от начального значения 0 до конечного значения 3 с шагом изменения 1 - for (int i = 0; i < 4; i++).
9) Внутрь этого цикла вложен цикл перебора столбцов с параметром j, от начального значения 0 до конечного значения 5 с шагом изменения 1 - for (int j = 0; j < 6; j++).
10) Далее следует вывод на экран матрицы размером 4 на 6 внутрь контейнера richTextBox1 .
11) Далее организуется цикл перебора строк с параметром i, от начального значения 0 до конечного значения 3 с шагом изменения 1 - for (int i = 0; i < 4; i++).
12) Внутрь этого цикла вложен цикл перебора столбцов с параметром ii, от начального значения 0 до конечного значения 6-1 с шагом изменения 1 - for (int ii = 0; ii < 6-1; ii++).
13) Внутрь этого цикла вложен цикл перебора столбцов с параметром j, от начального значения 0 до конечного значения 6-1-ii с шагом изменения 1 - for (int j = 0; j < 6-1-ii; j++).
14) Внутри этих вложенных циклов перебора реализованы три проверки условия, которые в зависимости if (im[i, j] > im[i, j + 1]) p = im[i, j]; im[i, j] = im[i, j + 1]; im[i, j + 1] = p;
15) Таким образом, осуществляется заполнение массива по заданному заданием правилу и вывод на экран матрицы размером внутрь контейнера richTextBox2.
16) Далее по заданию выводим на экран вектор наибольших элементов строк for (int i = 0; i < 4; i++) s = s + im[i, 5] + "\t"; richTextBox2.AppendText("\n Вектор наибольших элементов строк " + s);
17) нахождение номера строки с наибольшим значением
int imax = 0;
double max = im[0, 5];
for (int i = 1; i < 4; i++)
{
if (im[i, 5] > max)
max = im[i, 5];
imax = i;
richTextBox2.AppendText("\n\nНомер строки с наибольшим значением " + (1 + imax).ToString() + ". Наибольшее значение " + max.ToString());
18) Далее выводим на экран суммы в строке с наибольшим значением по формуле x1x6+x2x5+...+x6x1.
double SP=0;
for (int j = 0; j < 3; j++)
{
SP = SP + im[imax, j] * im[imax, 5 - j];
}
richTextBox2.AppendText("\n\nСумма произведений " + (SP*2).ToString());
Описания используемых переменных были приведены в процессе описания алгоритма.
Контрольный пример выполнения задания представлен на рис. 2.1.
Рис 2.1. контрольный пример.
2.2 Выполнение задания № 2 курсовой работы
Вариант 23. Найти наименьший номер члена последовательности, для которого выполняется условие an- an-1 < е. Вывести на экран этот номер и все элементы ai, где i = 1, 2,..., n.
Контрольный пример нахождения наименьший номер члена последовательности, для которого выполняется условие an- an-1 <е приведен на Рис. 2.2.
Рис. 2.2. Контрольный пример нахождения наименьший номер члена последовательности, для которого выполняется условие an- an-1 <е .
Пояснение работы программы сделаем с помощью блок-схемы алгоритма Рис. 2.3.
Размещено на http://www.allbest.ru/
Рис. 2.3. Блок-схема нахождения наименьший номер члена последовательности, для которого выполняется условие an- an-1 <е.
2.3 Выполнение задания № 3 курсовой работы
Вариант 3. Дана строка. Подсчитать, сколько различных символов встречается в ней. Вывести их на экран.
Контрольный пример решения поставленной задачи приведен на Рис. 2.4.
Рис. 2.4. Контрольный пример решения поставленной задачи.
Алгоритм выполнения задания
Пояснение работы программы сделаем с помощью словесного описания.
1) Алгоритм реализуется с помощью одной процедуры void button1_Click(object sender, EventArgs e).
2) Инициализируем переменные int kol = 0, bool bulevo = true, int n = 0.
3) Создаем массив string[] mas = new String[str.Length]
4) Вводим текст внутрь контейнера richTextBox1.
5) Далее организуется цикл перебора строк с параметром i, от начального значения 0 до конечного значения i < str.Length с шагом изменения 1. for (int i = 0; i < str.Length; i++).
6) Внутрь этого цикла вложен цикл перебора проверки одинаковых символов с параметром j, от начального значения 0 до конечного значения j < mas.Length с шагом изменения 1 for (int j = 0; j < mas.Length; j++).
7) Внутри этих вложенных циклов перебора вложены две проверки условия которые в зависимости от значения подсчитывают количество различных символов в строке if (str[i].ToString() == mas[j]) , if (bulevo).
8) Далее организован цикл перебора с параметром j, от начального значения 0 до конечного значения j<n, где n количество различных символов for (int j = 0; j < n; j++).
9) Далее следует вывод на экран обработанной информации.
2.4 Выполнение задания № 4 курсовой работы
Вариант 23.
Вычислить значения функции и вывести на экран в виде таблицы её значение с заданной точностью, используя ряд Маклорена. Значения переменной х выбирать из интервала от xнач до xкон с шагом dx с точность . Сформированной таблице сделать соответствующий заголовок. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.
Контрольный пример решения поставленной задачи приведен на Рис. 2.5.
Рис. 2.5. Контрольный пример решения поставленной задачи.
Алгоритм выполнения задания
Пояснение работы программы сделаем с помощью словесного описания.
1) Алгоритм реализуется с помощью одной процедуры void button1_Click(object sender, EventArgs e). И метода static string Exp_(double x, double ee).
2) Инициализируем переменные double f = 1, int z = -1, double c = x, double zn = 1, double i = 1, double a=z * c / zn.
3) Далее организуется цикл с предусловием, выполняется пока истинно условие Math.Abs(a) > ee.
4) В теле цикла вызывается метод static string Exp_(double x, double ee)
5) Далее инициализируем переменные double f = 1, int z = -1, double c = x, double zn = 1, double i = 1, double a=z * c / zn. ;
6) В нутри цикла с предусловиями организуем вложенный цикл с предусловием который выполняется пока истинно значение Math.Abs(a) > ee. ;
7) Внутри вложенного цикла организуем математические вычисления и увеличиваем шаг на 1 f = f + a; i++; z = -z; c = c * x; zn = zn * i; a = z * c / zn;
8) Далее идет конвертация вещественного типа в строковую и запись в переменную f - return f.ToString() + " n=" + i.ToString();
9) Открываем метод исключения try catch.
10) В теле метода try catch организуем очистку контейнера richTextBox1 и с преобразованием типов присваиваем переменные из textbox.
double xn = Convert.ToDouble(textBox1.Text);
double xk = Convert.ToDouble(textBox2.Text);
double dx = Convert.ToDouble(textBox3.Text);
double ee = Convert.ToDouble(textBox4.Text);
11) Далее организуется цикл перебора строк с параметром x, от начального значения xn до конечного значения x < xk с шагом изменения x = x + dx- for (double x = xn; x < xk; x = x + dx).
12) В теле цикла выводим текст внутрь контейнера richTextBox1.
13) Далее следует вывод на экран обработанной информации.
2.5 Выполнение задания № 5 курсовой работы
Вариант № 23.
Будем считать, что предложением считается любая последовательность символов, начинающиеся пробелом и заканчивающиеся точкой, вопросительным или восклицательным знаком. Слова разделяются пробелами, ` - ' - тире, точкой, запятой, вопросительным или восклицательным знаком. Напишите программу, которая определяет количество предложений в данном текстовом файле.
Контрольный пример решения поставленной задачи приведен на Рис. 2.6.
Рис. 2.6. Контрольный пример решения поставленной задачи.
Алгоритм выполнения задания
Пояснение работы программы сделаем с помощью словесного описания.
1) Алгоритм реализуется с помощью одной процедуры void button1_Click(object sender, EventArgs e).
2) Подсоединяем файл StreamReader str = new StreamReader("file.txt",Encoding.Default);
3) Инициализируем переменную var n = 0;
4) Считывание из файла string txt = str.ReadToEnd
5) Далее организуется цикл перебора строк с параметром i, от начального значения 0 до конечного значения i < txt.Length-1с шагом изменения 1. for (int i = 0; i < txt.Length-1; i++)
6) В теле цикла выполняется условие (((i == 0) && (txt[i] == ' ')) || (((txt[i] == '.') || (txt[i] == '!') || (txt[i] == '?') || (txt[i] == '-')) && (txt[i + 1] == ' '))) n++;, где подсчитывается количество предложений в данном текстовом файле
7) После завершения чтения файла закрываем его str.Close();
8) Далее следует вывод на экран обработанной информации.
ЗАКЛЮЧЕНИЕ
При выполнении настоящей курсовой работы были освоены основные принципы разработки алгоритмов и программ, методы отладки и решения задач на ЭВМ в различных режимах. Так же были разобраны основы системного программирования и основы объектно-ориентированного подхода к программированию.
В процессе решения поставленных задач курсовой работы использовались прикладные системы программирования и необходимые методы решения заданий.
Иинструментальной средой разработки программ стала MS Visual Studio 2010.
В первом задании курсовой работы были рассмотрены такие методы решения задач как матрицы. Заданная матрица элементов должна быть заполнена определенным образом и выведена на экран. При выполнении данного задания использовались массивы и соответствующие расчеты.
Условием второго задания курсовой работы было ннайти наименьший номер члена последовательности, для которого выполняется условие an- an-1 <е. При решении поставленной задачи использовался цикл с предусловием.
В третьем задании курсовой работы были рассмотрены строки. При выполнении данного задания были применены необходимые операции со строками, а именно строковый массив, нахождение длины строки и т.д.
Темой четвертого задания курсовой работы стала работа с методами. При выполнении задания была составлена программа вызова метода с помощью которого было решено условие данного задания.
Темой заключительного задания курсовой работы была работа с файлами. При решении задания использовались одномерные массивы.
По окончанию курсовой работы можно сказать, что нами были изучены и закреплены следующие задачи:
- ставить задачу и разрабатывать алгоритм её решения;
- использовать прикладные системы программирования;
- разрабатывать основные программные документы;
- работать с современными системами программирования, включая объектно-ориентированные;
- языками процедурного и объектно-ориентированного программирования, навыками разработки и отладки программ не менее, чем на одном из алгоритмических процедурных языков программирования высокого уровня,
- методами и средствами разработки и оформления технической документации.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
Павловская Т. А. C#. Программирование на языке высокого уровня: Учебник для вузов. - СПб.: БХВ-Петербург. 2007.
Попов И. И., Партыка Т. Л. Языки программирования: Учебное пособие. - М.: ФОРУМ: ИНФРА-М, 2008.
Голицина О. Л., Попов И. И. Основы алгоритмизации и программирования: Учебное пособие. - М.: ФОРУМ: ИНФРА-М, 2005.
Фаронов В. В., Создание приложений с помощью C#: Руководство программиста. - М.: Эксмо, 2008.
Свердлов С. З. Языки программирования и методы трансляции. Учебное пособие. - СПб.: Питер, 2007.
Павловская Т. А. С/С++ Программирование на языке высокого уровня. - СПб.: Питер, 2005.
Нортроп Тони, Уилдермьюс Шон, Райан Билл. Основы разработки приложений на платформе Microsoft .Net Framework. Учебный курс Microsoft / Пер. с англ. - М.: «Русская редакция», СПб.: «Питер», 2007.
ПРИЛОЖЕНИЕ 1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace вариант_23_1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
double[,] im = new double[4, 6];// Вводим массив
private void button1_Click(object sender, EventArgs e)
{
Random r=new Random();
for (int i = 0; i < 4; i++)
for (int j = 0; j < 6; j++)
im[i, j] = r.Next(1, 20); //Заполнение массива
string s = "";
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 6; j++)
s = s + im[i, j].ToString() + "\t";
s = s + "\n";
}
richTextBox1.Text = s;//Вывод массива
}
private void button2_Click(object sender, EventArgs e)
{
double p = 0;
for (int i = 0; i < 4; i++)
{
for (int ii = 0; ii < 6-1; ii++)
for (int j = 0; j < 6 - 1 - ii; j++)
{
if (im[i, j] > im[i, j + 1])
{
p = im[i, j];
im[i, j] = im[i, j + 1];
im[i, j + 1] = p;
}
}
}
string s = "";
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 6; j++)
s = s + im[i, j].ToString() + "\t";
s = s + "\n";
}
richTextBox2.Text = s;
s = "";
for (int i = 0; i < 4; i++) s = s + im[i, 5] + "\t";
richTextBox2.AppendText("\n Вектор наибольших элементов строк " + s);// Упорядочивание строк по возрастанию их наибольших элементов. Вывод вектора наибольших элементов строк
int imax = 0;
double max = im[0, 5];
for (int i = 1; i < 4; i++)
{
if (im[i, 5] > max)
{
max = im[i, 5];
imax = i;
}
}
richTextBox2.AppendText("\n\nНомер строки с наибольшим значением " + (1 + imax).ToString() + ". Наибольшее значение " + max.ToString());//нахождение номера строки с наибольшим значением
double SP=0;
for (int j = 0; j < 3; j++)
{
SP = SP + im[imax, j] * im[imax, 5 - j];
}
richTextBox2.AppendText("\n\nСумма произведений " + (SP*2).ToString());//нахождение суммы в строке с наибольшим значением по формуле x1x6+x2x5+...+x6x1
}
}
}
ПРИЛОЖЕНИЕ 2
vvvvvusing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace вариант_2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Clear();
double E = 0; //задание точности
double an_1 = 0;
double an = Math.Atan(an_1)+1;
int n = 2;
richTextBox1.AppendText("a1=0\n");
richTextBox1.AppendText("a"+n.ToString()+"="+an.ToString()+"\n");//Вывод элементов
try
{
E = Convert.ToDouble(textBox1.Text);
while(Math.Abs(an-an_1)>=E)
{
an_1 = an;
an = Math.Atan(an_1)+1;
n++;
richTextBox1.AppendText("a" + n.ToString() + "=" + an.ToString() + "\n");//цикл последовательности и поиск наименьшего элемента для которого выполняется условие
}
}
catch (Exception ex)
{
richTextBox1.Text = "Ошибка ввода е";
}
}
}
}
ПРИЛОЖЕНИЕ 3
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace задача_3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ПРИЛОЖЕНИЕ 3(продолжение)
}
private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Clear();
string str = textBox1.Text;
int kol = 0;
string[] mas = new String[str.Length];//создание массива
bool bulevo = true;
int n = 0;
for (int i = 0; i < str.Length; i++)//Перебор символов в строке
{
for (int j = 0; j < mas.Length; j++)//Проверка одинаковых символов
{
if (str[i].ToString() == mas[j])
{
bulevo = false;
break; // пропуск одинаковых символов
}
}
if (bulevo)
{
mas[n] = str[i].ToString();
n++;
kol++;
}
bulevo = true;//подсчет различных символов
}
for (int j = 0; j < n; j++)
{
richTextBox1.AppendText(mas[j] + " ");
}
richTextBox1.AppendText("\n" + kol.ToString());//Вывод количества различных символов
}
}
}
ПРИЛОЖЕНИЕ 4
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace _23_4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
static string Exp_(double x, double ee)
{
double f = 1;
int z = -1;
double c = x;
double zn = 1;
double i = 1;
double a=z * c / zn;
while (Math.Abs(a) > ee)
{
f = f + a;
i++;
z = -z;
c = c * x;
zn = zn * i;
a = z * c / zn;
}
return f.ToString() + " n=" + i.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Clear();
try
{
double xn = Convert.ToDouble(textBox1.Text);
double xk = Convert.ToDouble(textBox2.Text);
double dx = Convert.ToDouble(textBox3.Text);
double ee = Convert.ToDouble(textBox4.Text);
for (double x = xn; x < xk; x = x + dx)
{
richTextBox1.AppendText("x=" + x.ToString() + " y=" + Exp_(x, ee) + "\n");
}
}
catch (Exception ex)
{
richTextBox1.Text = "Ошибка ввода";
}
}
}
}
ПРИЛОЖЕНИЕ 5
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace вариант_5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
StreamReader str = new StreamReader("file.txt",Encoding.Default);//Подсоединяем файл
var n = 0;
string txt = str.ReadToEnd();//Считывание из файла
for (int i = 0; i < txt.Length-1; i++)
{
if (((i == 0) && (txt[i] == ' ')) || (((txt[i] == '.') || (txt[i] == '!') || (txt[i] == '?') || (txt[i] == '-')) && (txt[i + 1] == ' '))) n++;
}//Определение количества предложений в тексте
button1.Text = n.ToString();
richTextBox1.Text =txt;
str.Close();// Закрытие файла
}
}
}
Размещено на Allbest.ru
Подобные документы
Изучение общей структуры языка программирования Delphi: главные и дополнительные составные части среды программирования. Синтаксис и семантика языка программирования Delphi: алфавит языка, элементарные конструкции, переменные, константы и операторы.
курсовая работа [738,1 K], добавлен 17.05.2010Понятие и специфические особенности языка программирования Си, история его создания. Интегрированная система Borland C. Процесс программирования с помощью данного языка. Графические примитивы в языках программирования. Преобразования на плоскости.
курс лекций [782,2 K], добавлен 04.10.2011Стандартизированный процедурный язык программирования. Создание системного программного обеспечения и прикладных программ. Особенности языка Си, его основные недостатки. Передача параметров в функцию по значению. Стандартная библиотека языка Си.
презентация [396,3 K], добавлен 12.11.2012Язык программирования как формальная знаковая система, предназначенная для записи программ, его отличие от естественных языков. Прописные и строчные буквы латинского алфавита. Ключевые слова языка программирования. Классическая схема создания программы.
презентация [1,2 M], добавлен 19.02.2014Символьный тип данных как составляющая языка программирования: управляющие символы, лексемы и разделители. Разработка программного обеспечения для практической реализации решения задач, содержащих символьные величины языка программирования Turbo Pascal.
курсовая работа [37,7 K], добавлен 03.05.2012Базовый синтаксис языка программирования С#. Объявление переменных и присваивание им значений. Управление порядком выполнения программы. Выполнение преобразований с помощью команд преобразования. Определение классов, конструктора, работа с файлами.
курс лекций [692,5 K], добавлен 23.11.2009Цели и задачи дисциплины "Технология программирования". Программные средства ПК. Состав системы программирования и элементы языка. Введение в систему программирования и операторы языка Си. Организация работы с файлами. Особенности программирования на С++.
методичка [126,3 K], добавлен 07.12.2011Характеристика базовых конструкций языков программирования. Изучение истории их развития и классификации. Определение основных понятий языков программирования. Описание основных операторов, которые используются в языках программирования высокого уровня.
курсовая работа [400,6 K], добавлен 10.11.2016Разработка на языке программирования C# в среде Microsoft Visual Studio 2010 на базе Microsoft NET Framework 4 (4.5) программного средства, реализующего компилятор модельного языка программирования. Лексический, синтаксический и семантический анализатор.
курсовая работа [1,3 M], добавлен 24.06.2013Алфавит, операторы языка С#. Понятие классов и объектов, модификаторы. Структура программного модуля. Практический пример заполнения матрицы. Программа нахождения первого отрицательного члена заданной последовательности, контрольный пример и блок-схема.
курсовая работа [1,4 M], добавлен 04.01.2015