SlideShare uma empresa Scribd logo
1 de 62
www.studentam-in.ru

ПРОГРАММИРОВАНИЕ
НА ЯЗЫКЕ

Образовательные
Услуги
Студентам

С#

:)

uslugi_studentam_in@mail.ru

1

Created by Alexander Gora
WWW . Studentam-In . RU

ЧАСТЬ I
ВВЕДЕНИЕ

начальные сведения о платформе .NET и языке C#

ЧАСТЬ II
ОСНОВЫ ЯЗЫКА

детальное рассмотрение языка C#

ЧАСТЬ III
СОЗДАНИЕ ПРИЛОЖЕНИЙ WINDOWS
техника создания приложений с использованием GUI
WWW . Studentam-In . RU

ЧАСТЬ I
ВВЕДЕНИЕ

начальные сведения о платформе .NET и языке C#
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

WWW . Studentam-In . RU

Введение в язык С#








С# – поддерживает ООП.
Объект – фрагмент программы, решающий
функциональную задачу
Microsoft .NET – идея универсального
программного кода, выполняющегося на
любой ОС
Написание кода – Компиляция кода в
машинно-независимый CIL-код (common
intermediate language) – Выполнение кода JITкомпилятором (just in time)
Работа .NET-приложений в Windows
обеспечивает Microsoft .NET Framework
6

WWW . Studentam-In . RU

Синтаксис С#






Программа на С# – текстовый файл из
операторов и комментариев
Оператор – зарезервированные
слова, идентификаторы, константы, выражения
После оператора ставится ;
Комментарий – текст после // или внутри /* */
Строковые выражения заключаются в “



Идентификатор НЕ должен содержать
пробела, начинаться с цифры, быть
зарезервированным словом



Язык чувствителен к регистру букв, поэтому
например, fOr будет идентификатором, а не
зарезирвированным словом
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

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

Дата-время
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

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

WWW . Studentam-In . RU

Классы и объекты С#








Класс – код, после слова class
Класс – тип, образец для создания объектов

Члены класса:
Методы
Поля (хранят связанные с экземпляром класса
данные)
Свойства
События (один объект сообщает другому об
изменении своего состояния)
11

WWW . Studentam-In . RU

Классы и объекты С#


Принципы класса:
ИНКАПСУЛЯЦИЯ (сокрытие реализации
методов)
string S;
Console.WriteLine(“Введи логин”);
Console.ReadLine(S);
НАСЛЕДОВАНИЕ (класс наследник получает от
родителя его поля, методы, свойства и может
дополнять их своими, предающими
специфику)
ПОЛИМОРФИЗМ (один интерфейс можно
использовать для управления различными
реализациями (методами))
12

WWW . Studentam-In . RU

Пространства имен С#


Многие языки имеют свои библиотеки
типов, упрощающих разработку ПО, а в С#
такой библиотеки нет



С# использует общую систему типов CTS
(Common Type System), которая структурирует
все типы (более 4000) в логически связанные
группы – пространства имен



Эффективность программирования зависит от
знания CTS
13

WWW . Studentam-In . RU

Пространства имен С#
System
корневое пространство с классом Object
System.Data
классы пространства используются для работы
с БД
System.IO
классы, отвечающие за ВВ
System.Web
классы веб-приложений
System.Windows.Forms
классы для работы с элементами интерфейса
Windows
14

WWW . Studentam-In . RU

Пространства имен С#
Для объявления ссылки на пространство имен
используется оператор using

using System;
using System.Windows.Forms;
15

WWW . Studentam-In . RU

Метод Main()
Любая программа содержит класс в котором
объявляется только один метод Main(),
сопровождающийся модификатором static.
Метод определяет точку входа в программу
(момент начала ее работы)
Метод определяется как целочисленная
функция типа int, принимающая входной
параметр в виде массива строк string[]
(параметры запуска программы из cmd) и
возвращающая код завершения работы
программы
0 если программа завершилась успешно
Среда разработки Microsoft
16
Visual C# 2010 Express

File –> New project –> Console Application
17

WWW . Studentam-In . RU

«Шаблон» консольной программы

using System;

class Program
{
static void Main()
//static объявляет член класса статическим, т.е. для доступа к статическому члену можно не
создавать объект класса

{
//код программы
}
}
18

WWW . Studentam-In . RU

Пример консольной программы
19

WWW . Studentam-In . RU

Пример упрощенной программы
using System;
class HelloClass
{
public static void Main()
{
Console.WriteLine(“Привет мир!”);
Console.ReadLine();
}
}

void определяет метод не как функцию типа
int, а как процедуру (программу, которая не
возвращает результат)
20

WWW . Studentam-In . RU

Пример программы
с приемом параметров
using System;
class HelloClass
{
public static int Main(string[ ] args)
{
Console.WriteLine(“Привет мир!”);
return 0;
}
}
WWW . Studentam-In . RU

ЧАСТЬ II
ОСНОВЫ ЯЗЫКА

детальное рассмотрение языка C#
22

WWW . Studentam-In . RU

Создание объектов в С#



Класс – тип данных, схема для создания
объектов
Объект – экземпляр
класс, фрагмент, решающий
функциональную задачу
23

WWW . Studentam-In . RU

Создание двух объектов hc1, hc2
(объекты размещаются в динамической памяти)

using System;
class HelloClass
{
public static void Main()
{
HelloClass hc1 = new HelloClass();
//другой вариант
HelloClass hc2;
hc2 = new HelloClass();
}
}
24

WWW . Studentam-In . RU

Ввод и вывод с помощью класса Console
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();
}
}
26

WWW . Studentam-In . RU

Форматирование строк в С#
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

WWW . Studentam-In . RU

Преобразование числа в строку в С#
using System;
class Program
{
static void Main()
{
int num = 123456789;
Console.WriteLine(num.ToString(“c”));
Console.ReadLine();
}
}
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

WWW . Studentam-In . RU

Класс Math в С#








Abs(а)
модуль аргумента
Max(a, b)
максимальное число
Pow(a, b)
а в степени b
Round(a)
округление до целого
Sqrt(a)
корень квадратный
IEEERemainder(a, b) остаток от деления а на b
…
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

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

WWW . Studentam-In . RU

Другие значащие типы в С#






GetNumericValue(char c) возвращает код символа
IsDigit(char c) возвращает T, если символ с – цифра
IsLetter(char c) возвращает T, если символ с – буква
IsWhiteSpace(), IsUpper(), ToString(), ToUpper() …
34

WWW . Studentam-In . RU

Операции в С#










+-*/%
сложение, вычитание, умножение, деление, остаток
от деления
++х --х префиксный инкремент, декремент (сперва
увеличивают (уменьшают) значение
переменной, затем его используют)
! логическое отрицание (к логическим операндам)
<< >> сдвиг влево, сдвиг вправо на определенное
число разрядов
< <= > >= меньше, меньше или
равно, больше, больше или равно
== != равно, не равно
& ^ |AND, XOR, OR
35

WWW . Studentam-In . RU

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





Составной оператор – блок операторов в фигурных
скобках { }. Блок определяет область видимости
переменных.
Операторы перехода break, continue, goto, return.
Оператор присваивания =. Сокращенные формы
+=, -=, /=, *=, %=, <<=, >>=, &=, ^=, |=.
Множественное присваивание int x,y,z =1;
36

WWW . Studentam-In . RU

Условный оператор в С#
if (условие)
оператор1;
else
оператор2;
37

WWW . Studentam-In . RU

Оператор выбора в С#
switch (выражение)
{
case константное_выражение_1:
операторы1;
оператор_перехода_1; //break или goto
case константное_выражение_2:
операторы2;
оператор_перехода_2;
…
default:
операторыN;
оператор_перехода_N;
}
38

WWW . Studentam-In . RU

Оператор цикла с параметром в С#
for (инициалиция_счетчиков; условие; изменение_счетчиков)
оператор
for (инициалиция_счетчиков; условие; изменение_счетчиков)
{
оператор1;
оператор2;
…
}
39

WWW . Studentam-In . RU

Оператор цикла с пред- и пост- условием в С#
while (условие)
тело_цикла

do
тело_цикла
while (условие)
40

WWW . Studentam-In . RU

Процедуры и функции – методы класса в С#
Результатом выполнения операторов, образующих тело
функции, всегда является значение некоторого типа, поэтому
функция может участвовать в образовании выражений наряду с
переменными и константами.
Синтаксис описания:
[модификаторы] тип_данных имя ([формальные параметры])
{
тело
}
Модификатор private делает подпрограмму доступной только в
методах данного класса, а public делает подпрограмму (метод)
доступным в любом месте программы.
void означает отсутствие типа данных (т.е. подпрограмма
представляет собой процедуру и в ней нельзя использовать
оператор return).
41

WWW . Studentam-In . RU

Процедуры и функции – методы класса в С#
int A() {…}
void B() {…}
public string C() {…}
А и В закрытые члены класса, доступные только в методах этого же
класса.
А целочисленная функция.
В процедура.
С открытая функция строкового типа, доступная в любой точке
программы.
42

WWW . Studentam-In . RU

Процедуры и функции – методы класса в С#
int A() {…}
void B() {…}
public string C() {…}
А и В закрытые члены класса, доступные только в методах этого же
класса.
А целочисленная функция.
В процедура.
С открытая функция строкового типа, доступная в любой точке
программы.
43

WWW . Studentam-In . RU

Процедуры и функции – методы класса в С#
sin(x) имеет формальный параметр x
Виды формальных параметров:
1. Входные (программа передает данные в тело подпрограммы;
передаются не данные, а их копии, следовательно их изменение
никак не влияет на вызывающую программу)
2. Выходные (объявляются со словом out; передают данные из
подпрограммы в вызывающую программу)
3. Ссылочные (в тело подпрограммы передается адрес параметра
в памяти ПК; помечаются словом ref; передают и получают из
подпрограммы новые данные)
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

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

Массивы в С#
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

WWW . Studentam-In . RU

Двумерные массивы в С#
Массивы могут иметь несколько измерений.
Двумерный массив из четырех строк и двух столбцов.
int[,] arr = new int[4, 2];
Присвоение значения элементу массива:
arr[2, 1] = 25;
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

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

Класс 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

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

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

WWW . Studentam-In . RU

Файлы в С#
Классы обработки файлов имеются в пространстве имен System.IO.
Сериализация – процесс сохранения текущего состояния объекта в
памяти или на носителе информации. Обратный процесс
десериализация. Эти процессы управляются классами из
пространства имен System.Runtime.Serialization.
Классы для работы с файловой системой:
Directory, DirectoryInfo, File, FileInfo, Path
Классы для работы с потоками данных:
MemoryStream, NetworkStream, FileStream, BinaryReader, BinaryWriter,
StreamReader, StreamWriter.
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

WWW . Studentam-In . RU

Исключения в С#
Исключение – ошибка, приводящая к краху системы, получению
неверного результата.
Примеры исключительных ситуаций:
Деление на ноль, открытие несуществующего файла, выход
индекса массива из допустимых границ и т.д.
Для обработки используется блок try { } catch { } finally { } .
WWW . Studentam-In . RU

ЧАСТЬ III
СОЗДАНИЕ ПРИЛОЖЕНИЙ WINDOWS
техника создания приложений с использованием GUI
57

WWW . Studentam-In . RU

Порядок создания Windows-приложения
1. Запустить среду

2. Выбрать File – New – Project – Windows Forms Application
58

WWW . Studentam-In . RU

Настройка среды программирования
View – Code
View – Designer
View – Other windows – Toolbox
View – Other windows – Properties Window
View – Toolbars – …
59

WWW . Studentam-In . RU

Порядок создания Windows-приложения
3. Создать форму, разместить основные элементы
GUI, определить их свойства.
4. Написать обработчики событий.
5. Сохранить проект, запустить, протестировать, исправить
ошибки, сохранить.

Т.о. выделяют ДВА основных этапа создания приложений:
1. Проектирование формы.
2. Написание кода обработчиков событий.
60

WWW . Studentam-In . RU
61

WWW . Studentam-In . RU
WWW . Studentam-In . RU

Спасибо за просмотр
:)
Created by Alexander Gora

Mais conteúdo relacionado

Mais procurados

Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli types
mcroitor
 
библиотеки программирования
библиотеки программированиябиблиотеки программирования
библиотеки программирования
mcroitor
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программиста
Andrey Karpov
 
C++ осень 2013 лекция 2
C++ осень 2013 лекция 2C++ осень 2013 лекция 2
C++ осень 2013 лекция 2
Technopark
 
C++ осень 2012 лекция 6
C++ осень 2012 лекция 6C++ осень 2012 лекция 6
C++ осень 2012 лекция 6
Technopark
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
Technopark
 
C++ осень 2013 лекция 4
C++ осень 2013 лекция 4C++ осень 2013 лекция 4
C++ осень 2013 лекция 4
Technopark
 

Mais procurados (20)

Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli types
 
C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.
 
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...
TMPA-2013 Vert Krikun: Finding Defects in C and C++ Pointers Using Static Ana...
 
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
TMPA-2013 Anureyev: On the Road to Technology of Developing the Means of Dedu...
 
Document
DocumentDocument
Document
 
библиотеки программирования
библиотеки программированиябиблиотеки программирования
библиотеки программирования
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программиста
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
 
TMPA-2015: Lexical analysis of dynamically formed string expressions
TMPA-2015: Lexical analysis of dynamically formed string expressionsTMPA-2015: Lexical analysis of dynamically formed string expressions
TMPA-2015: Lexical analysis of dynamically formed string expressions
 
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и JavascriptСергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
Сергей Шамбир, Адаптация Promise/A+ для взаимодействия между C++ и Javascript
 
Статический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий ЛевановСтатический и динамический полиморфизм в C++, Дмитрий Леванов
Статический и динамический полиморфизм в C++, Дмитрий Леванов
 
C++ осень 2013 лекция 2
C++ осень 2013 лекция 2C++ осень 2013 лекция 2
C++ осень 2013 лекция 2
 
операторы и выражения
операторы и выраженияоператоры и выражения
операторы и выражения
 
особенности программирования на с++
особенности программирования на с++особенности программирования на с++
особенности программирования на с++
 
О сложностях программирования, или C# нас не спасет?
О сложностях программирования, или C# нас не спасет?О сложностях программирования, или C# нас не спасет?
О сложностях программирования, или C# нас не спасет?
 
C++ осень 2012 лекция 6
C++ осень 2012 лекция 6C++ осень 2012 лекция 6
C++ осень 2012 лекция 6
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
 
C++ осень 2013 лекция 4
C++ осень 2013 лекция 4C++ осень 2013 лекция 4
C++ осень 2013 лекция 4
 
C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.
 
Дмитрий Кашицын, Вывод типов в динамических и не очень языках I
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IДмитрий Кашицын, Вывод типов в динамических и не очень языках I
Дмитрий Кашицын, Вывод типов в динамических и не очень языках I
 

Destaque

язык программирования с#
язык программирования с#язык программирования с#
язык программирования с#
Nitrosalat
 
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
Омские ИТ-субботники
 

Destaque (20)

2. Операторы языка C#
2. Операторы языка C#2. Операторы языка C#
2. Операторы языка C#
 
Презентация курса "Основы программирования" на C#
Презентация курса "Основы программирования" на C#Презентация курса "Основы программирования" на C#
Презентация курса "Основы программирования" на C#
 
язык программирования с#
язык программирования с#язык программирования с#
язык программирования с#
 
4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#
 
1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#
 
3. Массивы в C#
3. Массивы в C#3. Массивы в C#
3. Массивы в C#
 
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
2016-12-03 02 Алексей Городецкий. Как пишут компиляторы
 
сложные условия pascal
сложные условия pascalсложные условия pascal
сложные условия pascal
 
02 ram
02 ram02 ram
02 ram
 
первое знакомство с паскаль
первое знакомство с паскальпервое знакомство с паскаль
первое знакомство с паскаль
 
Книги по программированию для подростков.Pptx
Книги по программированию для подростков.PptxКниги по программированию для подростков.Pptx
Книги по программированию для подростков.Pptx
 
C++ Builder Basic
C++ Builder BasicC++ Builder Basic
C++ Builder Basic
 
Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в ruby
 
Assembly Language Lecture 5
Assembly Language Lecture 5Assembly Language Lecture 5
Assembly Language Lecture 5
 
Программирование и проектирование (методологический анализ)-18-01-17
Программирование и проектирование (методологический анализ)-18-01-17Программирование и проектирование (методологический анализ)-18-01-17
Программирование и проектирование (методологический анализ)-18-01-17
 
What Makes Great Infographics
What Makes Great InfographicsWhat Makes Great Infographics
What Makes Great Infographics
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShare
 
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
 
You Suck At PowerPoint!
You Suck At PowerPoint!You Suck At PowerPoint!
You Suck At PowerPoint!
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization
 

Semelhante a Программирование на языке C Sharp (СИ решетка)

Шаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. ВведниеШаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. Введние
Sergey Nemchinsky
 
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Mikhail Kurnosov
 
паттерны программирования
паттерны программированияпаттерны программирования
паттерны программирования
guestfc8ae0
 
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Dima Dzuba
 
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидахCodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest
 
Николай Гусев «Функциональное программирование для C# разработчиков»
 Николай Гусев «Функциональное программирование для C# разработчиков» Николай Гусев «Функциональное программирование для C# разработчиков»
Николай Гусев «Функциональное программирование для C# разработчиков»
MskDotNet Community
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
GoSharp
 

Semelhante a Программирование на языке C Sharp (СИ решетка) (20)

Лекция 1. Основы объектно-ориентированного программирования
Лекция 1. Основы объектно-ориентированного программированияЛекция 1. Основы объектно-ориентированного программирования
Лекция 1. Основы объектно-ориентированного программирования
 
Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++
 
Шаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. ВведниеШаблоны разработки ПО. Часть 1. Введние
Шаблоны разработки ПО. Часть 1. Введние
 
Елена Жукова "Жизнь вне JavaScript"
Елена Жукова "Жизнь вне JavaScript"Елена Жукова "Жизнь вне JavaScript"
Елена Жукова "Жизнь вне JavaScript"
 
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
Лекция 12 (часть 2): Языки программирования семейства PGAS: IBM X10
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
 
Net 3.0 & Linq
Net 3.0 & LinqNet 3.0 & Linq
Net 3.0 & Linq
 
паттерны программирования
паттерны программированияпаттерны программирования
паттерны программирования
 
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++
 
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
 
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
 
"Погружение в Robolectric" Дмитрий Костырев (Avito)
"Погружение в Robolectric"  Дмитрий Костырев (Avito)"Погружение в Robolectric"  Дмитрий Костырев (Avito)
"Погружение в Robolectric" Дмитрий Костырев (Avito)
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
Design Principles
Design PrinciplesDesign Principles
Design Principles
 
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидахCodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
CodeFest 2014. Пугачев С. — Язык TypeScript или JavaScript на стероидах
 
Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?
 
Николай Гусев «Функциональное программирование для C# разработчиков»
 Николай Гусев «Функциональное программирование для C# разработчиков» Николай Гусев «Функциональное программирование для C# разработчиков»
Николай Гусев «Функциональное программирование для C# разработчиков»
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
 
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!
 

Mais de Alexandr Konfidentsialno

Mais de Alexandr Konfidentsialno (11)

Реферат на заказ на www.studentam-in.ru
Реферат на заказ на www.studentam-in.ruРеферат на заказ на www.studentam-in.ru
Реферат на заказ на www.studentam-in.ru
 
Презентация к защите курсовой работы на заказ на www.studentam-in.ru
Презентация к защите курсовой работы на заказ на www.studentam-in.ruПрезентация к защите курсовой работы на заказ на www.studentam-in.ru
Презентация к защите курсовой работы на заказ на www.studentam-in.ru
 
Презентация к защите дипломной работы
Презентация к защите дипломной работыПрезентация к защите дипломной работы
Презентация к защите дипломной работы
 
Отчет по практике на заказ на www.studentam-in.ru
Отчет по практике на заказ на www.studentam-in.ruОтчет по практике на заказ на www.studentam-in.ru
Отчет по практике на заказ на www.studentam-in.ru
 
Курсовая работа на заказ на www.studentam-in.ru
Курсовая работа на заказ на www.studentam-in.ruКурсовая работа на заказ на www.studentam-in.ru
Курсовая работа на заказ на www.studentam-in.ru
 
Дипломная работа на заказ на www.studentam-in.ru
Дипломная работа на заказ на www.studentam-in.ruДипломная работа на заказ на www.studentam-in.ru
Дипломная работа на заказ на www.studentam-in.ru
 
Техническое обслуживание персонального компьютера
Техническое обслуживание персонального компьютераТехническое обслуживание персонального компьютера
Техническое обслуживание персонального компьютера
 
Операционные системы и среды
Операционные системы и средыОперационные системы и среды
Операционные системы и среды
 
Конструкция и компоновка персонального компьютера
Конструкция и компоновка персонального компьютераКонструкция и компоновка персонального компьютера
Конструкция и компоновка персонального компьютера
 
Изучение HTML, CSS, PHP, MySQL
Изучение HTML, CSS, PHP, MySQLИзучение HTML, CSS, PHP, MySQL
Изучение HTML, CSS, PHP, MySQL
 
Архитектура электронно-вычислительных машин (ЭВМ) и систем
Архитектура электронно-вычислительных машин (ЭВМ) и системАрхитектура электронно-вычислительных машин (ЭВМ) и систем
Архитектура электронно-вычислительных машин (ЭВМ) и систем
 

Программирование на языке C Sharp (СИ решетка)

  • 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 если программа завершилась успешно
  • 16. Среда разработки Microsoft 16 Visual C# 2010 Express File –> New project –> Console Application
  • 17. 17 WWW . Studentam-In . RU «Шаблон» консольной программы using System; class Program { static void Main() //static объявляет член класса статическим, т.е. для доступа к статическому члену можно не создавать объект класса { //код программы } }
  • 18. 18 WWW . Studentam-In . RU Пример консольной программы
  • 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(); } }
  • 24. 24 WWW . Studentam-In . RU Ввод и вывод с помощью класса Console
  • 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(); } }
  • 26. 26 WWW . Studentam-In . RU Форматирование строк в С#
  • 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. Написание кода обработчиков событий.
  • 62. WWW . Studentam-In . RU Спасибо за просмотр :) Created by Alexander Gora