Презентация для курса лекций по программированию на языке C Sharp (СИ решетка). Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
2. WWW . Studentam-In . RU
ЧАСТЬ I
ВВЕДЕНИЕ
начальные сведения о платформе .NET и языке C#
ЧАСТЬ II
ОСНОВЫ ЯЗЫКА
детальное рассмотрение языка C#
ЧАСТЬ III
СОЗДАНИЕ ПРИЛОЖЕНИЙ WINDOWS
техника создания приложений с использованием GUI
3. WWW . Studentam-In . RU
ЧАСТЬ I
ВВЕДЕНИЕ
начальные сведения о платформе .NET и языке C#
4. 4
WWW . Studentam-In . RU
Введение в язык С#
C# (си-шарп) – ООЯП.
Разработан в 1998-2001 группой инженеров под
руководством Андерса Хейлсберга (д.р. 1960) в
компании Microsoft как язык разработки
приложений для платформы Microsoft .NET
Framework.
C# 4.0 представлен в конце 2008.
В 20 лет написал свой первый компилятор языка Паскаль,
который после портирования под MS-DOS продал фирме Borland.
До 36 лет был главным инженером фирмы Borland.
Затем перешел в Microsoft.
5. 5
WWW . Studentam-In . RU
Введение в язык С#
С# – поддерживает ООП.
Объект – фрагмент программы, решающий
функциональную задачу
Microsoft .NET – идея универсального
программного кода, выполняющегося на
любой ОС
Написание кода – Компиляция кода в
машинно-независимый CIL-код (common
intermediate language) – Выполнение кода JITкомпилятором (just in time)
Работа .NET-приложений в Windows
обеспечивает Microsoft .NET Framework
6. 6
WWW . Studentam-In . RU
Синтаксис С#
Программа на С# – текстовый файл из
операторов и комментариев
Оператор – зарезервированные
слова, идентификаторы, константы, выражения
После оператора ставится ;
Комментарий – текст после // или внутри /* */
Строковые выражения заключаются в “
Идентификатор НЕ должен содержать
пробела, начинаться с цифры, быть
зарезервированным словом
Язык чувствителен к регистру букв, поэтому
например, fOr будет идентификатором, а не
зарезирвированным словом
7. 7
Типы данных С#
Целый
int i;
i = 107;
byte b;
b = 0;
// -2 147 483 648 .. +2 147 483 647
// 0 .. 255
Вещественный
double d;
d = 1.5;
Символьный
char ch;
ch = 'a';
Строковый
string st;
st = “строка”;
// 5,0x10E-324 .. 1,7x10E308
Булев
bool b;
b = true;
WWW . Studentam-In . RU
8. 8
Типы данных С#
Дата-время
using System;
class Program
{
static void Main()
{
DateTime d;
d = DateTime.MinValue;
Console.WriteLine(d);
d = DateTime.Now;
Console.WriteLine(d.ToString());
Console.WriteLine(d.ToString());
Console.WriteLine(DateTime.Today);
Console.ReadLine();
}
}
WWW . Studentam-In . RU
9. 9
WWW . Studentam-In . RU
Типы данных С#
Объявление переменных
bool Bool = true;
int x = 0;
int x = 0, y = 1, z = new int();
string S = “Hello “;
Объявление констант (не инициируется с
помощью слова new)
const int x = 1, y = 100, z = 0;
10. 10
WWW . Studentam-In . RU
Классы и объекты С#
Класс – код, после слова class
Класс – тип, образец для создания объектов
Члены класса:
Методы
Поля (хранят связанные с экземпляром класса
данные)
Свойства
События (один объект сообщает другому об
изменении своего состояния)
11. 11
WWW . Studentam-In . RU
Классы и объекты С#
Принципы класса:
ИНКАПСУЛЯЦИЯ (сокрытие реализации
методов)
string S;
Console.WriteLine(“Введи логин”);
Console.ReadLine(S);
НАСЛЕДОВАНИЕ (класс наследник получает от
родителя его поля, методы, свойства и может
дополнять их своими, предающими
специфику)
ПОЛИМОРФИЗМ (один интерфейс можно
использовать для управления различными
реализациями (методами))
12. 12
WWW . Studentam-In . RU
Пространства имен С#
Многие языки имеют свои библиотеки
типов, упрощающих разработку ПО, а в С#
такой библиотеки нет
С# использует общую систему типов CTS
(Common Type System), которая структурирует
все типы (более 4000) в логически связанные
группы – пространства имен
Эффективность программирования зависит от
знания CTS
13. 13
WWW . Studentam-In . RU
Пространства имен С#
System
корневое пространство с классом Object
System.Data
классы пространства используются для работы
с БД
System.IO
классы, отвечающие за ВВ
System.Web
классы веб-приложений
System.Windows.Forms
классы для работы с элементами интерфейса
Windows
14. 14
WWW . Studentam-In . RU
Пространства имен С#
Для объявления ссылки на пространство имен
используется оператор using
using System;
using System.Windows.Forms;
15. 15
WWW . Studentam-In . RU
Метод Main()
Любая программа содержит класс в котором
объявляется только один метод Main(),
сопровождающийся модификатором static.
Метод определяет точку входа в программу
(момент начала ее работы)
Метод определяется как целочисленная
функция типа int, принимающая входной
параметр в виде массива строк string[]
(параметры запуска программы из cmd) и
возвращающая код завершения работы
программы
0 если программа завершилась успешно
17. 17
WWW . Studentam-In . RU
«Шаблон» консольной программы
using System;
class Program
{
static void Main()
//static объявляет член класса статическим, т.е. для доступа к статическому члену можно не
создавать объект класса
{
//код программы
}
}
19. 19
WWW . Studentam-In . RU
Пример упрощенной программы
using System;
class HelloClass
{
public static void Main()
{
Console.WriteLine(“Привет мир!”);
Console.ReadLine();
}
}
void определяет метод не как функцию типа
int, а как процедуру (программу, которая не
возвращает результат)
20. 20
WWW . Studentam-In . RU
Пример программы
с приемом параметров
using System;
class HelloClass
{
public static int Main(string[ ] args)
{
Console.WriteLine(“Привет мир!”);
return 0;
}
}
21. WWW . Studentam-In . RU
ЧАСТЬ II
ОСНОВЫ ЯЗЫКА
детальное рассмотрение языка C#
22. 22
WWW . Studentam-In . RU
Создание объектов в С#
Класс – тип данных, схема для создания
объектов
Объект – экземпляр
класс, фрагмент, решающий
функциональную задачу
23. 23
WWW . Studentam-In . RU
Создание двух объектов hc1, hc2
(объекты размещаются в динамической памяти)
using System;
class HelloClass
{
public static void Main()
{
HelloClass hc1 = new HelloClass();
//другой вариант
HelloClass hc2;
hc2 = new HelloClass();
}
}
25. 25
WWW . Studentam-In . RU
Создание объектов в С#
using System;
class Program
{
static void Main()
{
Console.Write("Введите ваш логин: ");
string st = Console.ReadLine();
if (st != "")
Console.WriteLine("Приветствуем, {0}!", st);
else
Console.WriteLine("Приветствуем анонимный пользователь!");
Console.Write("Введите ваш возраст: ");
st = Console.ReadLine();
Console.WriteLine("Ваш возраст {0} лет. n", st);
Console.Write("Нажмите клавишу ввода для завершения работы
программы");
Console.ReadLine();
}
}
27. 27
WWW . Studentam-In . RU
Форматирование строк в С#
using System;
class Program
{
static void Main()
{
Console.WriteLine("Форматируем число 9.99 C {0:c} ", 9.99);
//0 определяет место, которое будет заменено
//буква c задает денежный формат в соответствии с локализацией ОС
Console.WriteLine("Без формата, требуется 15 позиций {0:15} ",
123456789);
Console.WriteLine("Форматируем число 1234.56789 F9 {0:f9} ", 1234.56789);
//вещественное число с фиксированной точкой и количеством знаков после точки
Console.WriteLine("Форматируем число 123456.789 G {0:G} ",
//формат F или E в зависимости от размера числа
123456.789);
Console.WriteLine("Форматируем число 123456.789 N5 {0:N5} ",
//разделитель тысяч с количеством знаков после точки
123456.789);
Console.WriteLine("Форматируем число 123456789
//HEX-формат
}
123456789);
Console.WriteLine("Форматируем число 123456789
Console.ReadLine();
}
x {0:x} ",
X {0:X} ",
123456789);
28. 28
WWW . Studentam-In . RU
Преобразование числа в строку в С#
using System;
class Program
{
static void Main()
{
int num = 123456789;
Console.WriteLine(num.ToString(“c”));
Console.ReadLine();
}
}
29. 29
WWW . Studentam-In . RU
Управляющие последовательности в С#
using System;
class Program
{
static void Main()
{
string st1 = "123@n456";
string st2 = @"123n456";
Console.WriteLine(st1);
Console.WriteLine(st2);
Console.ReadLine();
}
}
30. 30
WWW . Studentam-In . RU
Класс Math в С#
Abs(а)
модуль аргумента
Max(a, b)
максимальное число
Pow(a, b)
а в степени b
Round(a)
округление до целого
Sqrt(a)
корень квадратный
IEEERemainder(a, b) остаток от деления а на b
…
31. 31
Класс Math в С#
using System;
class Program
{
static void Main()
{
int n1, n2;
n1 = -3;
n2 = Math.Abs(n1);
Console.WriteLine(n2);
Console.WriteLine(Math.Max(n1, n2));
Console.WriteLine(Math.Pow(n1, n2));
Console.WriteLine(Math.Round(1.5));
Console.WriteLine(Math.Sqrt(81));
Console.WriteLine(Math.IEEERemainder(81,9));
Console.ReadLine();
}
}
WWW . Studentam-In . RU
32. 32
WWW . Studentam-In . RU
Класс Random в С#
using System;
class Program
{
static void Main()
{
Random r1 = new Random(); //неповторяющаюся серия (на основе даты и времени)
for (int i = 1; i <= 2; i++)
Console.WriteLine(r1.Next().ToString());
Random r2 = new Random(1); //повторяющаяся серия (на основе начального значения)
for (int i = 1; i <= 2; i++)
Console.WriteLine(r2.Next().ToString());
Console.ReadLine();
}
}
33. 33
WWW . Studentam-In . RU
Другие значащие типы в С#
GetNumericValue(char c) возвращает код символа
IsDigit(char c) возвращает T, если символ с – цифра
IsLetter(char c) возвращает T, если символ с – буква
IsWhiteSpace(), IsUpper(), ToString(), ToUpper() …
34. 34
WWW . Studentam-In . RU
Операции в С#
+-*/%
сложение, вычитание, умножение, деление, остаток
от деления
++х --х префиксный инкремент, декремент (сперва
увеличивают (уменьшают) значение
переменной, затем его используют)
! логическое отрицание (к логическим операндам)
<< >> сдвиг влево, сдвиг вправо на определенное
число разрядов
< <= > >= меньше, меньше или
равно, больше, больше или равно
== != равно, не равно
& ^ |AND, XOR, OR
35. 35
WWW . Studentam-In . RU
Операторы языка в С#
Составной оператор – блок операторов в фигурных
скобках { }. Блок определяет область видимости
переменных.
Операторы перехода break, continue, goto, return.
Оператор присваивания =. Сокращенные формы
+=, -=, /=, *=, %=, <<=, >>=, &=, ^=, |=.
Множественное присваивание int x,y,z =1;
36. 36
WWW . Studentam-In . RU
Условный оператор в С#
if (условие)
оператор1;
else
оператор2;
37. 37
WWW . Studentam-In . RU
Оператор выбора в С#
switch (выражение)
{
case константное_выражение_1:
операторы1;
оператор_перехода_1; //break или goto
case константное_выражение_2:
операторы2;
оператор_перехода_2;
…
default:
операторыN;
оператор_перехода_N;
}
38. 38
WWW . Studentam-In . RU
Оператор цикла с параметром в С#
for (инициалиция_счетчиков; условие; изменение_счетчиков)
оператор
for (инициалиция_счетчиков; условие; изменение_счетчиков)
{
оператор1;
оператор2;
…
}
39. 39
WWW . Studentam-In . RU
Оператор цикла с пред- и пост- условием в С#
while (условие)
тело_цикла
do
тело_цикла
while (условие)
40. 40
WWW . Studentam-In . RU
Процедуры и функции – методы класса в С#
Результатом выполнения операторов, образующих тело
функции, всегда является значение некоторого типа, поэтому
функция может участвовать в образовании выражений наряду с
переменными и константами.
Синтаксис описания:
[модификаторы] тип_данных имя ([формальные параметры])
{
тело
}
Модификатор private делает подпрограмму доступной только в
методах данного класса, а public делает подпрограмму (метод)
доступным в любом месте программы.
void означает отсутствие типа данных (т.е. подпрограмма
представляет собой процедуру и в ней нельзя использовать
оператор return).
41. 41
WWW . Studentam-In . RU
Процедуры и функции – методы класса в С#
int A() {…}
void B() {…}
public string C() {…}
А и В закрытые члены класса, доступные только в методах этого же
класса.
А целочисленная функция.
В процедура.
С открытая функция строкового типа, доступная в любой точке
программы.
42. 42
WWW . Studentam-In . RU
Процедуры и функции – методы класса в С#
int A() {…}
void B() {…}
public string C() {…}
А и В закрытые члены класса, доступные только в методах этого же
класса.
А целочисленная функция.
В процедура.
С открытая функция строкового типа, доступная в любой точке
программы.
43. 43
WWW . Studentam-In . RU
Процедуры и функции – методы класса в С#
sin(x) имеет формальный параметр x
Виды формальных параметров:
1. Входные (программа передает данные в тело подпрограммы;
передаются не данные, а их копии, следовательно их изменение
никак не влияет на вызывающую программу)
2. Выходные (объявляются со словом out; передают данные из
подпрограммы в вызывающую программу)
3. Ссылочные (в тело подпрограммы передается адрес параметра
в памяти ПК; помечаются словом ref; передают и получают из
подпрограммы новые данные)
44. WWW . Studentam-In . RU
44
Процедуры и функции – методы класса в С#
using System;
тип результата и входного параметра
class Program
{
private static int my_func(int sum)
{
for (int i = 0; i <= 5; i++) //1+2+3+4+5=15
sum += i;
return sum;
}
static void Main()
{
Console.WriteLine(my_func(4));
Console.ReadLine();
}
}
вызов функции и
передача начального значения
для переменной sum
45. 45
WWW . Studentam-In . RU
Массивы в С#
Массив – упорядоченная структура, содержащая данные одного и
того же типа.
Индекс – номер элемента в массиве.
Первый элемент массива имеет индекс 0.
Описание массива:
int[] arrInt;
//целочисленный массив
char[] arrChar; //массив символов
float[] arrFloat;
//массив вещественных чисел
Инициализация массива:
arrInt = new int[25];
//в массиве 25 целых чисел
//индекс первого элемента 0, а индекс последнего элемента 24!
arrChar = new char[3];
//в массиве 3 символа
arrFloat = new float[1000]; //в массиве 1000 вещественных чисел
Наполнение массива:
int[] arrInt = new int[3] {1, 22, 3}
46. 46
Массивы в С#
using System;
class Program
{
static void Main()
{
int[] arrInt;
arrInt = new int[10];
Random rnd = new Random();
for (int i = 0; i < 10; i++)
{
arrInt[i] = rnd.Next(10);
Console.WriteLine(arrInt[i]);
}
Console.ReadLine();
}
}
WWW . Studentam-In . RU
47. 47
WWW . Studentam-In . RU
Двумерные массивы в С#
Массивы могут иметь несколько измерений.
Двумерный массив из четырех строк и двух столбцов.
int[,] arr = new int[4, 2];
Присвоение значения элементу массива:
arr[2, 1] = 25;
48. 48
WWW . Studentam-In . RU
Двумерные массивы в С#
Индексы
using System;
class Program
{
static void Main()
{
int[,] arr = new int[4, 2];
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 2; j++)
{
arr[i, j] = i+j;
Console.Write("{0} ", arr[i, j]);
if (j % 2 == 1)
{
Console.WriteLine();
}
}
}
Console.ReadLine();
}
}
00
01
10
11
20
21
30
31
0+0
0+1
1+0
1+1
2+0
2+1
3+0
3+1
49. 49
WWW . Studentam-In . RU
Класс System.Array в С#
Класс System.Array имеет статические свойства и методы,
упрощающие манипулирование массивом как объектом.
Свойство:
public int Length{get:};
возвращает количество элементов
Метод:
public static void CopyTo(Array, Index);
копирует из текущего одномерного массива все элементы в
массив Array, начиная с элемента Index.
Примечание:
В отличие от обычных массивов и объектов класса System.Array,
класс ArrayList (пространство имен System.Collections)
предназначен для хранения объектов произвольного типа.
50. 50
Класс System.Array в С#
using System;
class Program
{
static void Main()
{
Array arrInt = Array.CreateInstance(typeof(int), 10);
Random rnd = new Random();
for (int i = 0; i < arrInt.Length; i++)
{
arrInt.SetValue(rnd.Next(10), i);
Console.WriteLine(arrInt.GetValue(i));
}
Console.ReadLine();
}
}
WWW . Studentam-In . RU
51. 51
WWW . Studentam-In . RU
Класс String в С#
Класс String предназначен для хранения строк переменной длины.
Для совместимости определен псевдоним string типа String.
Свойство:
public int Length() {get:};
возвращает длину строки
Метод:
public static int Compare(string S1, string S2);
public static string Concat (params object[]);
CopyTo, EndsWith, Format, IndexOf, Insert, Remove, Replace, ToLower, T
oUpper, Trim, Split, Join …
Лексема – подстрока в строке, которую можно выделить по
признаку.
Пример лексем:
c:program filesmicrosoft visual studioreadme.html
имена диска, каталогов и файла – лексемы с признаком
52. 52
WWW . Studentam-In . RU
Класс String в С#
using System;
class Program
{
static void Main()
{
string txt = "1 абв, " + "2 абв, " + "3 абв, " + "4 абв, " + "5 абв. ";
Console.WriteLine("Исходная строка: n");
Console.WriteLine("{0}n", txt);
Console.WriteLine("Разбиение на предложения n", txt);
string[] sentSplit, words;
sentSplit = txt.Split(',');
for (int i =0; i < sentSplit.Length; i++)
Console.WriteLine("Предложение [{0}]: {1}", i, sentSplit[i]);
string sentJoin = string.Join(",", sentSplit);
Console.WriteLine("n Соединение предложений: n{0}", sentJoin);
Console.WriteLine("n Разделение на слова: n");
words = txt.Split(',', ' ');
for (int i = 0; i < words.Length; i++)
Console.WriteLine("Слово [{0}]: {1}", i, words[i]);
sentJoin = string.Join(" ", words);
Console.WriteLine("n Соединение слов: n{0}", sentJoin);
Console.ReadLine();
}
}
53. 53
WWW . Studentam-In . RU
Файлы в С#
Классы обработки файлов имеются в пространстве имен System.IO.
Сериализация – процесс сохранения текущего состояния объекта в
памяти или на носителе информации. Обратный процесс
десериализация. Эти процессы управляются классами из
пространства имен System.Runtime.Serialization.
Классы для работы с файловой системой:
Directory, DirectoryInfo, File, FileInfo, Path
Классы для работы с потоками данных:
MemoryStream, NetworkStream, FileStream, BinaryReader, BinaryWriter,
StreamReader, StreamWriter.
54. 54
Класс System.IO в С#
using System.IO;
class Program
{
static void Main()
{
string dirPath = @"c:myTestFolder";
if (Directory.Exists(dirPath))
Directory.Delete(dirPath);
else
Directory.CreateDirectory(dirPath);
}
}
WWW . Studentam-In . RU
55. 55
WWW . Studentam-In . RU
Исключения в С#
Исключение – ошибка, приводящая к краху системы, получению
неверного результата.
Примеры исключительных ситуаций:
Деление на ноль, открытие несуществующего файла, выход
индекса массива из допустимых границ и т.д.
Для обработки используется блок try { } catch { } finally { } .
56. WWW . Studentam-In . RU
ЧАСТЬ III
СОЗДАНИЕ ПРИЛОЖЕНИЙ WINDOWS
техника создания приложений с использованием GUI
57. 57
WWW . Studentam-In . RU
Порядок создания Windows-приложения
1. Запустить среду
2. Выбрать File – New – Project – Windows Forms Application
58. 58
WWW . Studentam-In . RU
Настройка среды программирования
View – Code
View – Designer
View – Other windows – Toolbox
View – Other windows – Properties Window
View – Toolbars – …
59. 59
WWW . Studentam-In . RU
Порядок создания Windows-приложения
3. Создать форму, разместить основные элементы
GUI, определить их свойства.
4. Написать обработчики событий.
5. Сохранить проект, запустить, протестировать, исправить
ошибки, сохранить.
Т.о. выделяют ДВА основных этапа создания приложений:
1. Проектирование формы.
2. Написание кода обработчиков событий.