Управляющие структуры C#

Автор работы: Пользователь скрыл имя, 27 Декабря 2012 в 13:42, курсовая работа

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

Язык программирования С# был создан в конце 1990-х годов и стал частью общей. NET- стратегии Microsoft. Впервые он увидел свет в качестве α - версии в середине 2000 года. Главным архитектором С# был Андерс Хейлсберг — один из ведущих специалистов в области языков программирования, получивший признание во всем мире. Хейлсберг был главным архитектором языков Turbo Pascal, Borland Delphi, JAVA и J++, и его богатый опыт помог в создании очень мощного и удобного нового языка. В создании языка так же приняли участие Скотт Уилтамут и Питер Гоулд.

Файлы: 1 файл

Текст курсовой.docx

— 72.46 Кб (Скачать файл)
    1. ВВЕДЕНИЕ

Язык программирования С# был создан в конце 1990-х годов и стал частью общей. NET- стратегии Microsoft. Впервые он увидел свет в качестве α - версии в середине 2000 года. Главным архитектором С# был Андерс Хейлсберг — один из ведущих специалистов в области языков программирования, получивший признание во всем мире. Хейлсберг был главным архитектором языков Turbo Pascal, Borland Delphi, JAVA и J++, и его богатый опыт помог в создании очень мощного и удобного нового языка. В создании языка так же приняли участие Скотт Уилтамут и Питер Гоулд.

 С тех пор язык сильно вырос в плане популярности и стал, чуть ли не самым предпочитаемым языком среди разработчиков Windows- и Web-приложений, которые используют платформу .NET Framework. Отчасти, привлекательность языка С# связана с его понятным синтаксисом, который происходит от синтаксиса C/C++, не смотря на это, синтаксис C# упрощает некоторые вещи. Независимо от этого упрощения, язык С# обладает той же мощью, что и C++, и потому теперь нет никакой причины не переходить на его использование.

 С# непосредственно связан с С, C++ и JAVA. Почти все профессиональные программисты сегодня знают С и C++, и большинство знает Java. Поскольку С# построен на прочном, понятном фундаменте, то переход от этих "фундаментальных" языков к "надстройке" происходит без особых усилий со стороны программистов. Так как Андерс Хейлсберг не собирался изобретать свое "колесо", он сосредоточился на введении усовершенствований и новшеств.

"Дедушкой" С# является  язык С. От С язык С# унаследовал  синтаксис, многие ключевые слова  и операторы. Кроме того, С#  построен на улучшенной объектной  модели, определенной в C++. Если программист знает С или C++, то с С# он сразу станет друзьями. С# и Java связаны между собой несколько сложнее. Java также является потомком С и C++. У него тоже общий с ними синтаксис и сходная объектная модель. Подобно Java, C# предназначен для создания переносимого кода. Однако С# — не потомок Java, скорее С# и Java можно считать двоюродными братьями, имеющими общих предков, но получившими от родителей разные наборы "генов".

     C# - строго типизированный объектно-ориентированный язык, чей код внешне похож на С++ (и Java). Это решение проектировщиков языка C# позволяет разработчикам на C++ легко воспользоваться своими знаниями для быстрого освоения C#. Синтаксис С# в некоторых отношениях отличается от C++, но большинство отличий между этими языками носят семантический и поведенческий характер, что обусловлено отличиями исполняющих сред, в которых работают программы, написанные на этих двух языках.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    1. Ветвление программного кода

Для того чтобы программы  на С# были более гибкими, используются операторы перехода (операторы выбора). В С# есть два типа ветвления программы: безусловный переход и условный.  Ветвление — это способ управлять тем, какая строка кода должна выполняться следующей. Строка, на которую следует передать управление, определяется с помощью некоторого условного оператора. Работа такого условного оператора основана на выполнении сравнения контрольного значения и одного или нескольких возможных значений с использованием булевой логики. Ветвление позволяет управлять ходом выполнения кода программы, т.е. код выполняется не просто строка за строкой, а выборочно.

Кроме условного ветвления, в С# также предусмотрены возможности циклической обработки данных, которые определяются ключевыми словами: for, while, do, in и foreach. Такой тип ветвления программного кода является безусловным. Цикл — это участок кода, в котором операторы выполняются по несколько раз. Такой способ в ряде случаев бывает чрезвычайно удобным, поскольку позволяет повторять необходимые действия столько раз, сколько требуется (тысячи и даже миллионы), без необходимости выписывать соответствующий код такое же количество раз.

 

    1. Операторы выбора

 

Условные операторы позволяют  разветвлять код в зависимости  от выполнения определённых условий  или значения выражения. Их выражения  должно быть булевого типа – true (истина) или false(ложно). Условный переход можно реализовать в программе с помощью ключевых слов языка: if, else или switch. Такой переход возможен только при условии, если он является истинным - true. Подробнее эти операторы рассмотрены ниже.

 

 

      1. Оператор if

 

if — это оператор ветвления, работа которого определяется условием. Условие оператора анализируется значениями условных выражений if, else или else if. Если условное выражение получает значение (true), то выполняется блок инструкций программы, который находится сразу же после условного выражения, если условие ложно (false), то блок инструкций просто опускается и идёт дальнейшее выполнение кода. Условное выражение оператора  if должны заключаться в круглые скобки  и, как было сказано выше,  должно быть  булевого  типа (true, false).

if (выражение 1)

{блок инструкций 1}

Для проверки истинности или ложности выражения оператора используются специальные операции сравнения (смотреть Таблицу 1).

Семантика  оператора  if  проста  и понятна.  Оператор  if  проверяет выражения  в порядке их написания. Как только получено значение true в каком либо выражении, проверка прекращается и выполняется блок инструкций, который  следует  за  выражением. С завершением выполнения инструкций, работа оператора if завершается. Ветви else и else if, если они есть, относится к ближайшему открытому if.

Нижеприведённый пример автора показывает работу одиночного условного оператора if. Если переменная ogr2 равна 0, то добавляется 4 столбца компонента DataGridView. Как только добавятся столбцы, добавляются строки и. Не смотря на то, что блок инструкций цикла выполнится четыре раза, условный оператор if выполнит свой блок инструкций только один раз, при первом выполнении цикла, т. к. после первого выполнения блока инструкций цикла переменная ogr2 будет иметь значение больше 0, в результате чего условное выражение оператора if получит значение false.

 

int ogr2 = 0;

while (ogr2 <= 2)

            {

                if (ogr2 == 0) { dataGridView2.ColumnCount = 4; }

                dataGridView2.Rows.Add("", "");

                ogr2++;

            }

Ветвь if…else, позволяющая  организовать  выбор из  двух  возможностей и ветви if …else if, позволяющие сделать выбор из нескольких возможностей,  могут отсутствовать.  Может быть  опущена и заключительная  else-ветвь, как показано в примере выше.  В этом  случае краткая форма оператора if  задает  альтернативный  выбор -  выполнять или не выполнять дальнейшие инструкции этого оператора. При использовании оператора if…else выполняется проверка выражения if. Если значение условного выражения получится false, не выполняя блока инструкций if , идёт проверка выражения else и, отталкиваясь от значения, которое было получено выше, будет принято решение выполнять или нет блок инструкций else.

if (выражение 1)

{блок инструкций 1}

else (выражение 2)

{блок инструкций 2}

При написании кода с использованием оператора else не нужно записывать выражение напротив этого ключевого слова. Это разветвление кода будет работать так: если условие истинно, то выполняется блок инструкций 1, иначе – блок инструкций 2.

Ниже приведён пример, в  котором используется ветвь else условного оператора if. Этот пример показывает, как можно создать выбор при использовании разных циклов для записи и чтения массива. В данном примере используются циклы for и while. О них автор расскажет ниже. Вернёмся к примеру. Если пользователь включит radioButton1, то условное выражение оператора if будет истинным и выполнится инструкция с использованием циклов for для записи и while для чтения массива. Если radioButton1 будет выключен, то значение условного выражения if будет ложным и, в результате этого программный код выполнит блок инструкций else. При таком выборе пользователя будет использован цикл while для записи, а цикл for для чтения.

Random rnd = new Random();

int[,] mass = new int[4, 4];

if (radioButton1.Checked == true)

            { for (int a = 0; a <= 3; a++)

                { for (int b = 0; b <= 3; b++)

                    { mass[a, b] = rnd.Next(0, 100);} }

                while (ogr1 <= 3)

                { while (ogr2 <= 3)

                    { dataGridView1.Rows[ogr1].Cells[ogr2].Value = mass[ogr1,      ogr2];  ogr2++; } ogr2 = 0; ogr1++; }

            } else {

                int d = 0;

                for (int c = 0; c <= 3; c++)

                {

                    while (d <= 3)

                    { mass[c, d] = rnd.Next(0, 100); d++; }  d = 0;

                } int d1 = 0;

                while (d1 <= 3)

                {

                   for (int c1 = 0; c1 <= 3; c1++)

                  { dataGridView1.Rows[d1].Cells[c1].Value = mass[d1, c1]; } d1++;}}

А при написании кода, с использованием ветвления if…else if, нужно обязательно указывать параметры сравнения в условном выражении, иначе это будет являться ошибкой.

if (выражение 1)

{блок инструкций 1}

else if (выражение 2)

{блок инструкций 2}

else if (выражение n)

(блок инструкций n)

На самом деле оператор else if представляет собой два отдельных оператора. Работа этого условия будет следующей: если значение условного выражения оператора if будет истинным (true), то выполняется блок инструкций после этого выражения. Если значение этого выражения будет ложным, то последующий за ним блок игнорируется и идёт проверка условия на истинность дальнейшего оператора else if, в котором происходит то же самое и т. д.

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

Для написания составного выражения используются специальные  операторы (смотреть Таблица 2).

При использовании операции && (и) блок инструкций условия выполняется только в том случае, если значение всего составного выражения будет равно true (истинно). Если хотя бы одна операция будет равна false (ложно), то всё выражение автоматически становится ложным.

Операция | | (или) позволяет выполнить  блок условия тогда, когда хотя бы одна операция из составного выражения будет равно true (истинно). Если, например, в составном выражении первый оператор равен true, то проверка останавливается на первом сравнении и, не проверяя остальные выражения, сразу выполняется блок инструкций.

if ( (выражение 1) && (выражение 2) )

{блок инструкций 1}

if ( (выражение 1) | | (выражение 2) )

{блок инструкций 2}

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

if ((z < 11) || (z > 19))

                {

                     if (ost ==1)

                    {

                        label1.Text = Convert.ToString(z) + " " + " рубль";

                    }

                    else if ((ost >= 2) && (ost <= 4))

                    {

                        label1.Text = Convert.ToString(z) + " " + " рубля";

                    }

                    else if ((ost == 0) || ((ost >= 5) && (ost <= 9)))

                    {

                        label1.Text = Convert.ToString(z) + " " + " рублей"; } }

Первое условие этого примера выполнится тогда, когда переменная z не будет равно числам от 11 до 19. Если первое условие выполняется, то программа начинает проверку вложенных условных операторов. Первое вложенное условие выполнится тогда, когда переменная ost будет равна числам от 2 до 4. И последнее вложенное условие будет истинным только в том случае, если переменная ost будет равна 0 или числам от 5 до 9.

 

      1. Оператор switch

 

Оператор switch очень похож  на оператор if в том смысле, что  он так же обеспечивает условное выполнение кода в зависимости от результата выполненной проверки. Однако оператор switch позволяет производить проверку для многих значений переменной за один проход вместо того, чтобы проверять всего лишь одно условие. Эти проверки ограничены отдельными значениями и не допускают конструкций типа "больше, чем X", поэтому их использование имеет некоторые отличия; однако такой способ является очень эффективным.

Когда программист имеет  сложный набор условий, лучше  всего воспользоваться оператором switch. Логика оператора switch следующая: «найти значение, соответствующее переменной для сравнения, и выполнить соответствующее  действие». Иными словами, он работает как оператор выбора нужного действия.

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

Информация о работе Управляющие структуры C#