Содержание

Слайд 2

Содержание лекции

Первое консольное приложение на C#
Объявление и инициализация переменных
Внутренние типы данных и

Содержание лекции Первое консольное приложение на C# Объявление и инициализация переменных Внутренние
операция «new»
Иерархия классов типов данных
Итерационные конструкции в C#
Конструкции принятия решений
Методы и модификаторы параметров
Массивы в C#
Типы структур
Типы значения и ссылочные типы

Слайд 3

Первое консольное приложение на C#

Пример «Hello World»:
namespace SimpleCSharpApp
{
class Program
{
static

Первое консольное приложение на C# Пример «Hello World»: namespace SimpleCSharpApp { class
void Main(string [] args)
{
// Вывод простого сообщения пользователю.
Console.WriteLine("Hello World!");
// Ожидание нажатия клавиши
Console.ReadLine();
}
}
}

Слайд 4

Первое консольное приложение на C#

Важное замечание:
С# является чувствительным к регистру языком программирования.

Первое консольное приложение на C# Важное замечание: С# является чувствительным к регистру
Следовательно, Main и main или Readline и ReadLine будут представлять собой далеко не одно и то же.
Поэтому необходимо запомнить, что все ключевые слова в С# вводятся в нижнем регистре (например, public, lock, class, dynamic), а названия пространств имен, типов и членов всегда начинаются (по соглашению) с заглавной буквы, равно как и любые вложенные в них слова (как, например, Console.WriteLine, System.Windows.Forms.MessageBox и System.Data.SqlClient).

Слайд 5

Первое консольное приложение на C#

Обработка аргументов командной строки:
static void Main(string[ ] args)

Первое консольное приложение на C# Обработка аргументов командной строки: static void Main(string[

{
// Обработка любых входящих аргументов.
for(int i = 0; i < args.Length; i++)
Console.WriteLine ("Arg: {0}", args[i]);
Console.ReadLine();
}

Слайд 6

Первое консольное приложение на C#

Класс System.Console:

Первое консольное приложение на C# Класс System.Console:

Слайд 7

Объявление и инициализация переменных

Пример:
// Локальные переменные объявляются и инициализируются
// следующим образом:
// типДанных

Объявление и инициализация переменных Пример: // Локальные переменные объявляются и инициализируются //
имяПеременной = начальноеЗначение;
int myInt = 0;
// Объявлять локальные переменные и присваивать им
// начальные значения можно также в двух отдельных строках.
string myString;
myString = "This is my character data";
Console.WriteLine("Your data: {0}, {1}", mylnt, myString);
// Объявление трех переменных типа bool в одной строке.
bool b1 = true, b2 = false, b3 = b1;

Слайд 8

Внутренние типы данных и операция «new»

Пример:
// Использование ключевого слова
// new для

Внутренние типы данных и операция «new» Пример: // Использование ключевого слова //
создания переменных
bool b = new bool (); // Установка в false.
int i = new int(); // Установка в 0.
double d = new double() ; // Установка в 0.
DateTime dt = new DateTime(); // Установка в 1/1/0001 12:00:00 AM
Console.WriteLine ("{0}, {1}, {2}, {3}", b, i, d, dt);

Слайд 9

Иерархия классов типов данных

Важное замечание:
Даже элементарные типы данных в .NET имеют вид

Иерархия классов типов данных Важное замечание: Даже элементарные типы данных в .NET
иерархии классов. Каждый из них наследуется от класса System.Object (в котором содержится набор методов, таких как ToString(), Equals())

Слайд 10

Иерархия классов типов данных

Числовые типы данных:
// Минимальное значение типа int
Console.WriteLine ("Min

Иерархия классов типов данных Числовые типы данных: // Минимальное значение типа int
of int: {0}", int.MinValue);
// Максимальное значение типа double
Console.WriteLine ("Max of double: {0}", double.MaxValue);

Слайд 11

Иерархия классов типов данных

Тип System.Boolean:
Единственными значениями, которые могут присваиваться типу Boolean (bool)

Иерархия классов типов данных Тип System.Boolean: Единственными значениями, которые могут присваиваться типу
в C#, являются true и false

Слайд 12

Иерархия классов типов данных

Тип System.Char:
string позволяет представлять непрерывный набор символов («Hello»), а

Иерархия классов типов данных Тип System.Char: string позволяет представлять непрерывный набор символов
char – только конкретный символ в типе string (‘H’)
Пример: char myChar = ‘A’;

Слайд 13

Иерархия классов типов данных

Тип System.DateTime:
// Этот конструктор принимает в качестве
// аргументов

Иерархия классов типов данных Тип System.DateTime: // Этот конструктор принимает в качестве
сведения о годе, месяце и дне.
DateTime dt = new DateTime (2013, 10, 17);
// Какой это день месяца?
Console.WriteLine("The day of {0} is {1}", dt.Date, dt.DayOfWeek);

Слайд 14

Иерархия классов типов данных

Работа со строковыми данными:

Иерархия классов типов данных Работа со строковыми данными:

Слайд 15

Итерационные конструкции в C#

Конструкции для выполнения итераций:
Цикл for
Цикл foreach/in
Цикл while
Цикл do/while

Итерационные конструкции в C# Конструкции для выполнения итераций: Цикл for Цикл foreach/in Цикл while Цикл do/while

Слайд 16

Итерационные конструкции в C#

Цикл for:
for(int i = 0; i < 4; i

Итерационные конструкции в C# Цикл for: for(int i = 0; i {
+ + )
{
Console.WriteLine(“Number is: {0} “ , i) ;
}

Слайд 17

Итерационные конструкции в C#

Цикл foreach:
string[ ] carTypes = {"Ford", "BMW", "Yugo", "Honda"

Итерационные конструкции в C# Цикл foreach: string[ ] carTypes = {"Ford", "BMW",
};
foreach (string с in carTypes)
Console.WriteLine(c);

Слайд 18

Итерационные конструкции в C#

Цикл while и do/while:
string userIsDone = "";
while(userIsDone.ToLower () !=

Итерационные конструкции в C# Цикл while и do/while: string userIsDone = "";
"yes")
{
Console.Write("Are you done? [yes] [no]: ") ;
// запрос окончания
userIsDone = Console.ReadLine ();
Console.WriteLine ("In while loop");
}

Слайд 19

Конструкции принятия решений

Конструкции:
Оператор if/else
Оператор switch

Конструкции принятия решений Конструкции: Оператор if/else Оператор switch

Слайд 20

Конструкции принятия решений

Оператор if/else:
В отличие от языков С и C++, в С#

Конструкции принятия решений Оператор if/else: В отличие от языков С и C++,
этот оператор может работать только с булевскими выражениями

Слайд 21

Конструкции принятия решений

Оператор switch:
Console.WriteLine ("1 [C#], 2 [VB]");
Console.Write("Please pick your language

Конструкции принятия решений Оператор switch: Console.WriteLine ("1 [C#], 2 [VB]"); Console.Write("Please pick
preference: ");
string n= Console.ReadLine ();
switch (n)
{
case “1”: Console.WriteLine("Good choice, C# is a fine language.");
break;
case “2”: Console.WriteLine("VB: OOP, multithreading, and more!");
break;
default: Console.WriteLine("Well...good luck with that!");
break;
}

Слайд 22

Методы и модификаторы параметров

Формат метода:
class Program
{
//Статические методы могут вызываться
//напрямую

Методы и модификаторы параметров Формат метода: class Program { //Статические методы могут
без создания экземпляра класса.
static int Add(int x, int у)
{
return x + у;
}
}

Слайд 23

Методы и модификаторы параметров

Методы и модификаторы параметров

Слайд 24

Методы и модификаторы параметров

//По умолчанию аргументы передаются по значению.
public static int

Методы и модификаторы параметров //По умолчанию аргументы передаются по значению. public static
Add(int x, int y) {
int ans = x + y;
х = 10000; у = 88888;
return ans; }
// Передача двух переменных по значению.
static void Main(string[] args) {
int x = 9, у = 10;
Console.WriteLine("Before call: X: {0}, Y: {1}", x, y) ; // до вызова
Console.WriteLine("Answer is: {0}", Add(x, y) ) ; // ответ
Console.WriteLine("After call: X: {0}, Y: {1}", x, y) ; // после вызова
Console.ReadLine(); }
РЕЗУЛЬТАТ:
Before call: X: 9, Y: 10
Answer is: 19
After call: X: 9, Y: 10

Слайд 25

Методы и модификаторы параметров

Модификатор out:
// Выходные параметры должны предоставляться вызываемым методом.
public

Методы и модификаторы параметров Модификатор out: // Выходные параметры должны предоставляться вызываемым
static void Add (int x, int y, out int ans)
{ ans = x + y; }
// Присваивать первоначальное значение локальным
// переменным, используемым в качестве выходных
// параметров, не требуется, при условии, что в первый раз
// они используются в качестве выходных аргументов.
static void Main(string[] args)
{
int ans;
Add(90, 90, out ans);
Console.WriteLine("90 + 90 = {0}", ans);
Console.ReadLine();
}

Слайд 26

Методы и модификаторы параметров

Модификатор ref:
// Ссылочные параметры.
public static void SwapStrings(ref string

Методы и модификаторы параметров Модификатор ref: // Ссылочные параметры. public static void
s1, ref string s2) {
string tempStr = s1;
s1 = s2;
s2 = tempStr; }
static void Main(string[ ] args) {
string s1 = "Flip"; string s2 = "Flop";
Console.WriteLine("Before: {0}, {1} ", s1, s2) ; //до
SwapStrings (ref s1, ref s2);
Console.WriteLine("After: {0}, [1} ", s1, s2); // после
Console.ReadLine (); }
РЕЗУЛЬТАТ:
Before: Flip, Flop
After: Flop, Flip

Слайд 27

Методы и модификаторы параметров

Модификатор params:
// Возвращение среднего из некоторого количества значений double.

Методы и модификаторы параметров Модификатор params: // Возвращение среднего из некоторого количества

static double CalculateAverage(params double[] values)
{
// Вывод количества значений
Console.WriteLine ("You sent me {0} doubles.", values.Length);
double sum = 0;
if(values.Length == 0)
return sum;
for (int i = 0; l < values.Length; i++)
sum += values [i];
return (sum/values.Length);
}
На заметку!
Во избежание какой бы то ни было неоднозначности, в С# требуется, чтобы в любом методе поддерживался только один аргумент params, который должен быть последним в списке параметров.

Слайд 28

Методы и модификаторы параметров

Перегрузка методов:
class Program
{
static void Main(string[] args) {

Методы и модификаторы параметров Перегрузка методов: class Program { static void Main(string[]
}
// Перегруженный метод Add() .
static int Add(int x, int y)
{ return x + y; }
static double Add(double x, double y)
{ return x + y; }
static long Add(long x, long y)
{ return x + y; }
}

Слайд 29

Массивы в С#

static void SimpleArrays ()
{
// Создание и заполнение массива

Массивы в С# static void SimpleArrays () { // Создание и заполнение
тремя
// целочисленными значениями.
int[] myInts = new int[3];
mylnts[0] = 100;
mylnts[1] = 200;
mylnts[2] = 300;
// Отображение значений.
foreach (int i in myInts)
Console.WriteLine(i);
Console.WriteLine();
}

Слайд 30

Массивы в С#

static void Arraylnitialization ()
{
// с помощью ключевого слова

Массивы в С# static void Arraylnitialization () { // с помощью ключевого
new.
string[] stringArray = new string[] { "one", "two", "three" };
Console.WriteLine("stringArray has {0} elements", stringArray.Length);
// без применения ключевого слова new.
bool [] boolArray = { false, false, true };
Console.WriteLine("boolArray has {0} elements", boolArray.Length);
// с указанием ключевого слова new и желаемого размера.
int[] intArray = new int[4] { 20, 22, 23, 0 };
Console.WriteLine("intArray has {0} elements", intArray.Length);
Console.WriteLine();
}

Слайд 31

Массивы в С#

Передача массива в качестве аргумента:
static void PrintArray (int [] myInts)

Массивы в С# Передача массива в качестве аргумента: static void PrintArray (int

{
for(int i = 0; i < myInts.Length; i++)
Console.WriteLine("Item {0} is {1} ", i, myInts[i]);
}
static string[] GetStringArray()
{
string[] theStrings = {"Hello", "from", "GetStringArray"};
return theStrings;
}

Слайд 32

Массивы в С#

Массивы в С#

Слайд 33

Типы структур

На заметку!
Если вы ранее занимались объектно-ориентированным программированием, можете считать структуры

Типы структур На заметку! Если вы ранее занимались объектно-ориентированным программированием, можете считать
"облегченными классами", поскольку они тоже предоставляют возможность определять тип, поддерживающий инкапсуляцию, но не могут применяться для построения семейства взаимосвязанных типов. Когда есть потребность в создании семейства взаимосвязанных типов через наследование, нужно применять типы классов.
В С# структуры создаются с помощью ключевого слова struct.

Слайд 34

Типы структур

struct Point {
// Поля структуры.
public int X;
public int

Типы структур struct Point { // Поля структуры. public int X; public
Y;
// Добавление 1 к позиции (X, Y) .
public void Increment ()
{ X++; Y++; }
// Вычитание 1 из позиции (X, Y) .
public void Decrement ()
{ X--; Y—; }
// Отображение текущей позиции.
public void Display()
{ Console.WriteLine(X = {0}, Y= {1}", X, Y); }
}

Слайд 35

Типы значения и ссылочные типы

// Локальные структуры извлекаются из стека
// после

Типы значения и ссылочные типы // Локальные структуры извлекаются из стека //
завершения метода.
static void LocalValueTypes ()
{
//В действительности int представляет
// собой структуру System.Int32.
int i = 0;
//В действительности Point представляет
// собой тип структуры.
Point p = new Point();
} // Здесь i и р изымаются из стека.

Слайд 36

Типы значения и ссылочные типы

static void ValueTypeAssignment() {
Point p1 = new

Типы значения и ссылочные типы static void ValueTypeAssignment() { Point p1 =
Point (10, 10); Point p2 = p1;
// Вывод обеих переменных Point,
p1.Display(); p2.Display();
// Изменение значение p1.X и повторный вывод.
// Значение р2.Х не изменяется.
p1.X = 100;
Console.WriteLine("\n=> Changed p1.X\n");
p1.Display(); p2.Display(); }
РЕЗУЛЬТАТ:
X = 10, Y = 10
X = 10, Y = 10
=> Changed p1.X
X = 100, Y = 10
X = 10, Y = 10

Слайд 37

Типы значения и ссылочные типы

class PointRef {
public PointRef(int XPos, int YPos)

Типы значения и ссылочные типы class PointRef { public PointRef(int XPos, int

{ X = XPos; Y = YPos; }
}
static void ReferenceTypeAssignment () {
PointRef p1 = new PointRef (10, 10); PointRef p2 = p1;
p1.Display(); p2.Display();
p1.X = 100;
Console.WriteLine("\n=> Changed p1.X\n");
p1.Display(); p2.Display(); }
РЕЗУЛЬТАТ:
X = 10, Y = 10
X = 10, Y = 10
=> Changed p1.X
X = 100, Y = 10
X = 100, Y = 10

Слайд 38

Передача ссылочных типов по значению и по ссылке
Важные отличия:
В случае передачи ссылочного

Передача ссылочных типов по значению и по ссылке Важные отличия: В случае
типа по ссылке вызывающий код может изменять значения данных состояния объекта, а также сам объект, на который указывает входная ссылка.
В случае передачи ссылочного типа по значению вызывающий код может изменять только значения данных состояния объекта, но не сам объект, на который указывает входная ссылка.
Имя файла: Основы-C-.pptx
Количество просмотров: 122
Количество скачиваний: 0