Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Теперь разберем код программы более подробно




Первые 4 строки в исходном коде c ключевым словом using подключают библиотеки классов, с методами и свойствами которых мы будем с Вами работать:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

Далее объявляется пространство имен (что-то вроде собственной территории нашего проекта), в котором будет выполняться наш проект:

 

namespace ConsoleApplication7

{

//затем объявляется класс Programm, в котором находится точка выхода в программу – метод Main.

class Program

{

static void Main(string[] args)

{

Далее идет код самого метода. Здесь прописываются инструкции нашей программы:

//объявление строковой переменной str для хранения имени пользователя.

string str;

// метод вывода текста в консоль (текст прописывается в фигурных скобках). Метод Write Line() принадлежит классу Console, который в свою очередь находится в пространстве имен System. Теоретически нужно было бы написать S ystem.Console.WriteLine(), но как мы помним, в первых 4-х строках мы произвели подключение пространства имен System, поэтому далее в коде указывать на него нет необходимости.

Console.WriteLine("Как тебя зовут?");

// присваиваем переменной str значение, которое ввел пользователь.

str = Console.ReadLine();

// с пмощью мтода WriteLineвыводим на экран строку «Привет, имя_пользователя»

Console.WriteLine("Привет "+str);

//далее программа ожидает от пользователя нажатия на любую клавишу для заверешения своей работы. Для этого используется метод ReadKey().

Console.ReadKey();

}

}

} // не забываем закрывать фигурные скобки

Рис. 5

В следующих разделах будут более подробно рассмотрены основные возможности языка С#: синтаксис, типы данных, операторы ветвления программы, циклы, построение классов и создание приложений Windows Forms.
Синтаксис С#

Алфавит

Алфавит языка С# включает в себя следующие символы таблицы кодов ASCII:

· строчные и прописные буквы латинского алфавита;

· цифры от 0 до 9;

· символ «_»;

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

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

 

Символы служат для построения лексем (проще говоря, слов). Существует пять видов лексем:

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

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

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

· литералы;

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

Ниже приведена таблица, в которой отражены ключевые слова языка C#, использовать которые в качестве идентификаторов не разрешается.

abstract do in protected true
as double int public try
base else interface readonly typeof
bool enum internal ref uint
break event is return ulong
byte explicit lock sbyte unchecked
case extern long sealed unsafe
catch false namespace short ushort
char finally new sizeof using
checked fixed null stackalloc virtual
class float object static void
const for operator string volatile
continue foreach out struct while
decimal goto override switch  
default if params this  
delegate implicit private throw  

Комментарии

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

Комментарии в С# могут быть двух видов:

1. Однострочный комментарий. Символ // означает начало комментария, который заканчивается в конце строки.

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


Типы данных в С#

Встроенные типы

Как уже говорилось в разделе «Основные понятии», в платформе.NET существует CTS – Common Type System - стандартная система типов, которая является общей для всех языков программирования платформы.

Все типы в С#.NET делятся на Типы значений и Ссылочные.

Тип значения (value type) - тип, содержащий реальные данные. Этот тип не может быть равен null. Типы значений хранятся в области, известной как Стек.

Пример типов значений:

int x = 10, long y = 100;

Ссылочный тип (reference type) - тип, содержащий ссылку на значение. Ссылочные типы хранятся в области, которая называется Управляемая куча. Управляемая куча - это область памяти, в которой хранятся объекты, создаваемые с помощью ключевого слова new. Фактически это оперативная память вашего компьютера. При переполнении кучи вызывается сборка мусора.

Пример ссылочного типа:

 

string str = “Привет, пользователь!”;

//создали переменную str ссылочного типа String, которая указывает на объект в памяти, содержащий строку «Привет, пользователь!»

 

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

· целочисленные типы;

· типы с плавающей запятой;

· символы;

· логический тип;

· десятичный тип.

Ссылочные типы делятся на:

· объекты;

· строки.

 

Ниже представлена таблица встроенных типов.

СТS Тип Имя в С# Описание
System. Object object Класс, базовый для всех типов (CTS)
System. String string Строка
System. SByte sbyte 8 -разрядный байт (со знаком)
System. Byte byte 8 -разрядный байт (без знака)
System. S16 short 16-разрядное число (со знаком)
System. UM16 ushort 16-разрядное число (без знака)
System. Int32 int 32-разрядное число (со знаком)
System. UInt32 uint 32-разрядное число (без знака)
System. Int64 long 64-разрядное число (со знаком)
System. UInt64 ulong 64-разрядное число (без знака)
System.Char char 16-разрядный символ (Unicode)
System. Single float 32-разрядное число с плавающей точкой, (стандарт IEEE)
System. Double double 64-разрядное число с плавающей точкой, (стандарт IEEE)
System. Boolean bool Булево значение (true/false)
System. Decimal decimal Данный 128 разрядный тип используется в основном, когда требуется крайне высокая точность (до 28 знака)

 

Преобразование типов

 

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

Пример неявного преобразования типов:

 

short a = 100;

int b = a; // неявное преобразование.

 

Если при компиляции неявного преобразования возможна потеря информации, то компилятор не станет выполнять такое преобразование.

 

Пример явного преобразования типов:

short a;

int b – 100;

a = (short) b; // явное преобразование произойдет успешно.

Переменные

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

 

Пример.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication3

{

class Program

{

static void Main(string[] args)

{

int a = 5;

Console.WriteLine("Начальное значение переменной равно \t"+a);

Console.ReadKey();

a = 10;

Console.WriteLine("Теперь значение переменной равно\t"+a);

Console.ReadKey();

}

}

}

Рис. 6

Константы

Константы – это объекты, значение которых не может быть изменено. Бывают случаи, когда есть необходимость сохранить значение переменной, чтобы в ходе выполнения программы его нельзя было изменить. Такими константами могут быть всем известное число ПИ или Гравитационная постоянная.

Константы могут быть следующих видов:

· литеральные константы;

· символические;

· перечисления.

 

x = 2;

 

Значение «2» - это литеральная константа. Значение 2 –это всегда 2. Мы не можем сделать так, чтобы число 2 представляло какое-либо другое значение.

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

 

const тип идентификатор = значение;

 

В виде кода это будет выглядеть так:

 

const double pi = 3.14;

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

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication3

{

class Program

{

static void Main(string[] args)

{

const double pi = 3.14;

const double g = 9.8;

Console.WriteLine("Число Пи равно\t"+pi);

Console.WriteLine("Гравитационная постоянная равна\t"+g);

Console.ReadKey();

}

}

}

Рис. 7

Перечисления

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

 

Так будет выглядеть список констант, содержащий дни недели:

 

enum Week

{

const string pn = “Понедельник”;

const string vt = “Вторник”;

const string sr = “Среда”;

const string cht = “Четверг”;

const string pt = “Пятница”;

const string sb = “Суббота”;

const string vs = “Воскресение”;

}

 

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

 

Выражения

 

Выражение – некоторый код, определяющий значение. Например:

 

x = 10;

 

Оператор «=» устанавливает значение для переменной х равным 10. Также возможна следующая запись:

 

y = x = 10;

 

В данном случае переменной х присваивается значение 10, а затем оператор присваивания устанавливает вторую переменную y с тем же значением.

 

 

Инструкции

 

Инструкция – это некоторое законченное выражение в программном коде. Любая программа на языке С# состоит из последовательности определенных инструкций, после каждой из которых обязательно должен стоять символ «;».

Пример записи инструкций:

 

string str; // инструкция

a = 5; //инструкция

double у = х; //инструкция

 

Также возможна запись составных инструкций. Это набор простых инструкций, заключенных в фигурные скобки:

 

{

string str; // инструкция

a = 5; //инструкция

double у = х; //инструкция

}

 

Компилятор будет обрабатывать составную инструкцию как набор простых инструкций, в том порядке, в котором они написаны.

 

Разделители

 

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

 

х =1;

или

х = 1.

Из этого правила, как всегда бывает, есть исключение. Разделители в пределах строки (объекта типа string) будут обработаны как отдельные символы строки. То есть запись

 

Consol.WriteLine («Хочу быть ПРОГРАММИСТОМ!!!»);

 

будет обработана компилятором именно в таком виде, в котором она представлена выше в символах «», со всеми пробелами.


Ветвление программы

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

Безусловные переходы

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

· с помощью вызова функции;

· с помощью ключевых слов goto, break, continue, return или throw.

 

Пример безусловного перехода с использованием функции.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication4

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Запустили программу. Работает метод Main...");

Function();

Console.WriteLine("А тпереь опять работает метод Main.");

Console.ReadKey();

}

 

static void Function()

{

Console.WriteLine("Теперь моя очередь работать. Работает функция Function:)");

}

}

}

Рис. 8

 

Результат работы программы:

В консоль выводится строка: «Запустили программу. Работает метод Main...»

Далее программа осуществляет переход к функции Function, определенной ниже и в консоль выводится строка: «Теперь моя очередь работать. Работает функция Function:)»

Затем программа возвращается к выполнению последней инструкции и в консоль выводится еще одна строка: «А теперь опять работает метод Main.»

 

Пример безусловного перехода с помощью ключевого слова goto.

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication5

{

class Program

{

static void Main(string[] args)

{

int a = 0;

Console.WriteLine("Выведем на экран последовательно числа от 0 до 10");

Label:

Console.WriteLine("a = "+a);

a = a + 1;

if (a<=10)

goto Label;

Console.ReadKey();

}

}

}

Рис. 9

Результат работы программы.

В консоль выводится строка: «Выведем на экран последовательно числа от 0 до 10»

В консоль выводится строка: «а = 0»

Далее идет приращение переменной «а» на единицу: «а=а+1»

Проверяется условие: «Значение «а» меньше 10?»

Если меньше, то программа выполняет инструкцию goto Label и возвращается к метке Label.

Далее операция повторяется, пока «а» не достигла значения 10.

Когда значение «а» достигло 10, программа переходит к инструкции Сonsole.ReadKey(), которая ожидает от пользователя нажатия на любую клавишу для завершения работы программы.


Условные переходы

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

 

Оператор выбора (условный оператор if …else)

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

if (условие)

{

инструкции

}

else

{

инструкции

}

При этом оператор if можно использовать без дополнения else. Также в блоке инструкций оператора if можно расположить еще один оператор if с каким-либо условием. Получиться вариант ветвления, в котором второй оператор if вложен в первый.

Рассмотрим программу, содержащую оператор условного перехода if…else.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Primer1

{

class Program

{

static void Main(string[] args)

{

string Name;

int temp;

 

Console.WriteLine("Привет! Как тебя зовут?");

Name = Console.ReadLine();

Console.WriteLine("Привет,\t"+Name+".\t\nКакая температура на улице?");

temp = Convert.ToInt32(Console.ReadLine());

 

//определяем условие для оператора условного перехода

if (temp >= 20)

{

Console.WriteLine("Сегодня хорошая погода. Сейчас бы погулять");

}

//если условие выше не сработало, то определяем альтернативный //сценарий

else

{

Console.WriteLine("Хм...А я думал сегодня теплее. Останусь-ка я дома:)");

}

Console.ReadKey ();

}

}

}

Рис. 10

Результат работы программы будет выглядеть следующим образом:

В консоль выводится вопрос: «Привет! Как тебя зовут?»

Пользователь вводит свое имя: «Макс»

В консоль выводится следующий поврос: «Привет, Макс. Какая температура на улице?»

Пользователь вводит число, означающее температуру.

Далее сработает оператор условного перехода. Если температура больше 20 градусов, то выводится следующая строка:

«Сегодня хорошая погода. Сейчас бы погулять»

Если температура меньше 20 градусов, выводится следующая строка:

«Хм...А я думал сегодня теплее. Останусь-ка я дома:)»

 

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication6

{

class Program

{

static void Main(string[] args)

{

int a, b, s;

Console.WriteLine("Введите сторону «а» прямоугольника");

a = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Введите сторону «b» прямоугольника");

b = Convert.ToInt32(Console.ReadLine());

 

if (a > 0 && b > 0)

{

s = a * b;

Console.WriteLine("Площадь прямоугольника равна\t" + s);

}

else

Console.WriteLine("Значения сторон должны быть больше 0");

 

Console.ReadKey();

}

}

}

Рис. 11

Результат работы программы будет выглядеть следующим образом:

В консоль выводится строка: «Введите сторону «а» прямоугольника»

Пользователь вводит значение переменной «а»

В консоль выводится строка: «Введите сторону «b» прямоугольника»

Пользователь вводит значение переменной «b»

Далее проверяется условие: «a» и «b» больше нуля?

Если да, то производится расчет площади и в консоль выводится строка: «Площадь прямоугольника равна …»

Если значение «a» или «b» меньше нуля, в консоль выводится строка: «Значения сторон должны быть больше 0»

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


Оператор ветвления switch

 

Оператор ветвления switch является альтернативой оператору if … else. Его обычно использую в случаях, когда имеется более сложный набор условий, состоящий из нескольких вариантов. Суть его работы состоит в следующем: программа ищет значение, которое соответствует переменной для сравнения и далее выполняет указанные инструкции. Структура оператора выглядит так:

 

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

{

сase возможный вариант выражения:

инструкции;

break; // место выхода из case

case возможный вариант выражения:

инструкции;

break; //место выхода из case

}

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication8

{

class Program

{

static void Main(string[] args)

{

int a;

 

// предлагаем ползователю выбрать число из списка

Console.WriteLine("Выберите число:\n 100 \n 200\n 300");

 

//сохраняем набранное пользователем число в переменную «а»

a = Convert.ToInt32(Console.ReadLine());

 

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

switch (a)

 

// если пользователь набрал 100

case 100:

Console.WriteLine("Вы выбрали число 100");

break;

 

//если пользователь набрал 200

case 200:

Console.WriteLine("Вы выбрали число 200");

break;

 

//если пользователь набрал 300

case 300:

Console.WriteLine("Вы выбрали число 300");

break;

 

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

default:

Console.WriteLine("Выберите число из списка0");

break;

}

//ждем от пользователя нажатия любой клавиши для завершения работы программы

Console.ReadKey();

}

}

}

Рис. 12

Результат работы программы:

В консоль выводятся строки: «Выберите число: 100, 200, 300»

Допустим, пользователь выбирает 100

В консоль выводится строка: «Вы выбрали число 100»

Если пользователь выберет другой вариант, в ответ он получит соответствующую строку («Вы выбрали 200» или «Вы выбрали 300»).

Если пользователи введет число не из предложенного списка, в консоль выводится строка: «Выберите число из списка»


Циклические операторы

 

Оператор цикла с предусловием While

Структура оператора c предусловием While имеет следующий вид:

 

While (условие)

{

инструкции

}

 

При использовании этого оператора цикл выполняется, пока условие While< > имеет значение true.

 

Пример программы с оператором цикла While.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication7

{

class Program

{

static void Main(string[] args)

{

int a=0;

 

// пока «а» меньше либо равно 10

while (a<=10)

{

//выводим значение «а» в консоль

Console.WriteLine(a);

 

//производим приращение переменной «а» на единицу и цикл повторяется

a = a + 1;

}

 

Console.ReadKey();

}

}

}

Рис. 13

 

Результат работы программы:

В консоль выводится значение переменной «а», равное 0. Затем происходит приращение значения «а» на единицу и цикл повторяется (в консоль выводится следующее значение «а» после приращения на единицу, равное 1). Как только условие While становится равным false (т.е. значение «а» становится больше 10), цикл останавливается и программа ждет от пользователя нажатия любой клавиши для завершения работы.


Оператор цикла c постусловием Do …while

 

Оператор цикла Do … While имеет следующую структуру:

Do

{

Инструкции

}

While (условие);

 

Выражение выше можно прочитать следующим образом: «Выполнить инструкции. Проверить условие. Если условие выполняется, выполнить инструкции еще раз».

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

 

Пример использования цикла Do … While

Возьмем код программы из предыдущего примера и немного его изменим.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication7

{

class Program

{

static void Main(string[] args)

{

//инициализация переменной «а»

int a = 0;

 




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 432; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.25 сек.