1 A + B Операнд 1Операнд 2 Оператор Что такое выражение (expression) ? Что такое инструкция (statement) ? Операторы int max = (a > b) ? a : b;

Презентация:



Advertisements
Похожие презентации
Функции с переменным числом аргументов private static int Sum(int a, int b) { return a + b; } static void Main() { int sum = Sum(1, 2); } 1 Функции.
Advertisements

Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
ЛЕКЦИЯ 4 ОПЕРАТОРЫ.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.

С++. Шаблоны Сидоренко Иван. Введение Шаблоны обеспечивают поддержку обощенного программирования. Пример: template class Temp { T val; public: Temp( T);
PHP как язык программированияPHP как язык программирования.
Гречкина П.В., ПЯВУ-2, С++ Быстрое введение в язык C++ C++ Builder – консольное приложение либо Turbo C.
Тренировочное тестирование-2008 Ответы к заданиям КИМ Часть I.
Test 17 Вопрос 1. public class TKO { public static void main(String[] args) { String s = "-"; Integer x = 343; long L343 = 343L; if (x.equals(L343)) s.

1 Коллекции Коллекции.NET 1.0 Классы коллекций заданы как часть пространства имен System.CollectionsSystem.Collections
Параллельная работа сокетов в C#. Потоки в C# using System; using System.Threading; public class ThreadExample { public static void ThreadProc() { for.
Типовые расчёты Растворы
Test 3 Вопрос 1. 01:package test; 02: public class Test { 03: public static void main(String [] args) { 04: Test test = new Test(); 05: System.out.println(test.toString());}
Test 10 Вопрос 1. public class Test implements Iterator { // 1 private List list = new ArrayList (); // 2 public void addList(T... ts) { Collections.addAll(list,
Object-Oriented Programming Ramzi Saifan Program Control Slides adapted from Steven Roehrig.
Шаблоны в С++ Макаревич Л. Г.. Шаблоны функций Многие алгоритмы не зависят от типов данных. Многие алгоритмы не зависят от типов данных. #include using.
Некоторые вопросы оптимизации.
Язык C++ Лекция 2. Недостатки enumов Засорение namespaceа, в котором находится enum Соответственно, члены enumа должны иметь уникальный префикс.
Транксрипт:

1 A + B Операнд 1Операнд 2 Оператор Что такое выражение (expression) ? Что такое инструкция (statement) ? Операторы int max = (a > b) ? a : b;

2 Присваивания: = Математические (+, %, >>, …) Логические (==, !=, >=, …) Вызов метода: () Индексация: [] Условный: if, switch Цикла: for, while, do-while, foreach Перехода: goto, break, continue, return Операторы

Условные операторы int x = 1; … if (x) // error { …. } 3 int k = Int32.Parse(Console.ReadLine()); if (k % 2 == 0) { Console.WriteLine("Четное число"); } else { Console.WriteLine("Нечетное число"); } Console.ReadLine();

4 int x = 0; if (x = 1) { } // Что произойдет? string str = "_Текст"; if (str.Length > 0 && str[0] == '_') { }

Switch: Целые string enum char bool 5 int k = Int32.Parse(Console.ReadLine()); switch (k) { case 1: case 2: Console.WriteLine("Неудовлетворительно"); break; case 3: Console.WriteLine("Удовлетворительно"); break; case 4: Console.WriteLine("Хорошо"); break; case 5: Console.WriteLine("Отлично"); break; default: Console.WriteLine("Ошибка"); break; }

6 string str = null;... string result = (str != null ? str : "пусто"); или string result = str ?? "пусто"; int max = (a > b ? a : b); Тернерный оператор Сокращенная форма для проверки на null:

for uint sum = 0; for (int n=1; n

foreach string[] drives = Environment.GetLogicalDrives(); foreach (string s in drives) { Console.WriteLine(s); } int[] array = new int[] { 1, 1, 2, 3, 5, 8, 13 }; int sum = 0; foreach (var val in array) { sum += val; }

9 while Random rnd = new Random(); while (true) { int r = rnd.Next(1, 10); Console.WriteLine(r); if (r == 7) break; } while (reader.Read()) {... }

do-while 10 string password = "qwerty"; do { Console.Write("Введите пароль: "); string buf = Console.ReadLine(); } while (buf != password);

11 Оператор () int[] monthsLengths = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int month = 2; int year = 2012; int daysCount = monthsLengths[month] + (month == 2 && year % 4 == 0) ? 1 : 0;

12 A = B = C = D // ? A – B – C * D + F * G + H // ? Ассоциативность операторов int a, b, c; c = 1; // The following two lines are equivalent. a = b = c; a = (b = c); // The following line, which forces left // associativity, causes an error. //(a = b) = c;

13 string text = "Это текст"; if (text.Length == 0) Console.WriteLine("Пусто"); else { string[] words = text.Split(' '); foreach (var word in words) { Console.WriteLine(word); } Какая форма записи более понятна? string text = "Это текст"; if (text.Length == 0) { Console.WriteLine("Пусто"); } else { string[] words = text.Split(' '); foreach (var word in words) { Console.WriteLine(word); }

14 for (int n = 0; ; n++) { if (Console.ReadKey().Key == ConsoleKey.Escape) break; } Console.WriteLine("Вы ввели: {0} символов", n); // Ошибка! int n = 0; for (; ; n++) { if (Console.ReadKey().Key == ConsoleKey.Escape) break; } Console.WriteLine("Вы ввели: {0} символов", n);

Функции с переменным числом аргументов private static int Sum(int a, int b) { return a + b; } static void Main() { int sum = Sum(1, 2); } 15 Функции

int Sum(params int [] array) { int sum = 0; foreach (int n in array) { sum += n; } return sum; } int s1 = Sum(1, 2, 3); int s2 = Sum(1, 2, 3, 4, 5); 16 -возможно любое количество параметров -нет ограничений на тип параметров -params должен быть последним в списке аргументов, и в единственном экземпляре

int Min (int a, int b) { return (a < b ? a : b); } string Min (string a, string b) { return (a.Length < b.Length ? a : b); } float Min (float[] p) { … } Перегрузка функций (functions overload) 17 Min (1, 5); Min ("abc", "ab") Min (new float[]{0.1f, 0.2f, 0.3f});

18 bool IsLeapYear(DateTime dateTime) { return IsLeapYear(dateTime.Year); } bool IsLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0 || year % 400 == 0); }

Перегрузка функций, содержащих params void func (params int [] p); void func (int x, int y); void func (int x, params int [] p); void func (int x, int y); func(3, 5); func(10, 20, 30); func(1, 2); 19

При выборе варианта функции, у использования params меньший приоритет: void func (params int [] p); void func (int x, int y); void func (int x, params int [] p); void func (int x, int y); func(3, 5); func(10, 20, 30); func(1, 2); Но еще меньший приоритет у приведения типа : void func(params int[] p); void func(uint x, uint y); func(1, 2); 20

21 Передача value-type аргументов в функцию long x = 5; long y = x; y = 1; x - ? private static void SetZero(float val) { val = 0f; } static void Main() { float f = 10f; SetZero(f); // f - ? }

22 Передача ref-type аргументов в функцию int[] arrayA = { 1, 2, 3 }; int[] arrayB = arrayA; arrayB[0] = 5; foreach (int i in arrayA) Console.WriteLine(i); private static void SetZero(float[] val) { for (int i = 0; i < val.Length; i++) val[i] = 0f; } static void Main() { float[] array = { 1f, 2f, 3f }; SetZero(array); foreach (int i in array) Console.WriteLine(i); }

Модификатор ref -позволяет передавать в функцию значение по ссылке 23 private static void Swap (ref int a, ref int b) { int tmp = a; a = b; b = tmp; } int x = 1, y = 2; Swap(ref x, ref y);

24 Передаче по ссылке параметра reference-type private static void SetZero(int[] p) { p[0] = 10; p = new int[] { 1, 2, 3 }; }... int[] array = new int[5]; SetZero(array); foreach (int i in array) { Console.Write("{0} ", i); }

25 private static void SetZero(ref int[] p) { p[0] = 10; p = new int[] { 1, 2, 3 }; }... int[] array = new int[5]; SetZero(ref array); foreach (int i in array) { Console.Write("{0} ", i); }

Модификатор out -предназначен для получения значений из метода (по ссылке) 26 void MinMax(int a, int b, out int min, out int max) { min = (a < b) ? a : b; max = (a > b) ? a : b; } int minValue; int maxValue; MinMax(100, 10, out minValue, out maxValue);

27 Значения параметров функций по умолчанию public void Show(string text, string caption, bool sound) { //... }... Show("Привет!", "", false);

28 void Show(string text, string caption = "", bool sound = false) { //... }... Show("Привет!"); Show("Привет!", "Сообщение"); Show("Привет!", "Сообщение", true);

29 Именованные параметры class Circle { public void Set(int x, int y, int r) { } Circle circle = new Circle(); circle.Set(x: 0, y: 0, r: 10); // circle.Set(x: 0, r: 10, y: 0);

30 class Circle { public void Set(int x=0, int y=0, int r=1) { } Circle circle = new Circle(); circle.Set(y: 0);