Логическое или

! - логическое отрицание

Пример:

(a<=1)&&(b>2)

Условная операция является операцией и может использоваться в выражениях:

b>a?b:a;

Если окажется b>a, то результат операции равен b, иначе a.

Пример:

y=x+x>1?0:1+Math.Sin(x);

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

switch (выражение целого или строкового типа)

{

case конст.1:

операторы 1

case конст.2:

операторы 2

__

__

default:

операторы 0

}

Особенность switch: если в операторе i не указан оператор break, то будут выполняться операторы нижеследующих case:

switch (k)

{

case 1: a = 1;

case 2: a = 2;

default: a = 0;

}

В этом примере, если k = 1, то выполнится последовательность

a = 1; a = 2; a = 0;

Очевидно, что данный пример всегда будет определять a = 0;

Приведенный пример будет верным:

switch (k)

{

case 1: a = 1; break;

case 2: a = 2; break;

default: a = 0; break;

}

Однако иногда такая специфика оператора switch позволяет упростить ветвление учитывая, что в case может располагаться только одна константа:

switch (k)

{

case 1:

case 2:

case 3: a = 1; break;

case 4: a = 2; break;

}

В этом примере a будет равно 1 в случае, если k = 1 или k = 2 или k = 3.

Цикл с предусловием while:

Примеры:

while (a< 1) a++;

while (а <1){

а++;

b+=а;

}

Логика работы: оператор за циклом выполняется до тех пор, пока выполняется условие в скобках.

Правила формирования условия идентичны оператору ἰf

Цикл с постусловием do

do a++while(a <1);

do{

a++;

b+=a;

}

while(a <1);

Этот цикл по смыслу идентичен while, но в данном случае операторы цикла будут всегда выполняться хотя бы один раз, а условие проверяется в конце цикла

Цикл for

синтаксис:

for(начало значения; условие; модификация) оператор;

Логика работы:

1) Выполняются все выражения в начальных условиях. Здесь выражения могут указываться через знак запятая:

а=1, b=3, ἰ=0;

2) Проверяется условие. Если оно истинно, то выполняется оператор, иначе делается выход из цикла.

Синтаксис условия полностью соответствует оператору ἰf:

а<1;

3) после выполнения оператора выполняются выражения модификация. В этих выражениях должна задаваться такая модификация, чтобы было окончание цикла:

i++, j+=2;

4)Делается переход на П.2.

В операторе for можно опускать любую конструкцию в скобках:

for(; a<1; a++) s+=a; //нет начальных условий

for(i=1;; i ++) s+=ἰ; // нет условия, т.е. будет бесконечный чикл

for(ἰ=1; ἰ<10;) s+= ἰ; //нет модификации

for(;;) s+= ἰ; //пустой бесконечный цикл

В любом из циклов while, do, for могут использоваться операторы передачи управления:

contine; // переход на следующую операцию цикла

break; //выход из цикла

Оператор безусловного перехода:

goto a1; //принудительный переход на метку а1

а1: оператор;

Предупреждение: запрещено в программах использоваться этим оператором, кроме особо источительных случаев!

ДИРЕКТИВЫ ПРЕПРОЦЕССОРА

Позволяют перед компиляцией убирать и добавлять часть кода. Это практически всегда необходимо при отладке программы. Управление операторов препроцессора определяется с использованием символов. Символ – это логические переменные. Логическая переменная, например DEBUG принимает true, если она установлена оператором:

#define DEBUG

и значение false, если она установлена оператором

#undef DEBUG

Операторы # define и # undef записываются самыми первыми (можно за комментариями, если они есть).

Пример:

#define DEBUG

class Example 1

{public statiс void Main ()

{int i=5, k;

k=6*i;

# if DEBUG

MessageBox(“k=”+(string)k);

#endif

}}

Оператор препроцессора #if

# if символ 1

текст c#

#elif символ 2

текст c#

#elif символ 3

текст c#

#else

текст c#

#endif

Строки

Существует два типа строк:

string

StringBuilder

Отличия:

1) string является неизменяемым типом данного. Это значит, что при любой модификации создается в памяти новая копия, а старая сбрасывается в «мусор».

В связи с этим в string можно только прочитать отдельный символ:

a=”пример”;

c=a[2]; // в с будет буква ‘и’

но нельзя

a[2]=’a’;

StringBuilder является полноправным объектом и при модификации строки это делается именно в этой памяти, а не в копии. Этот объект можно наследовать в отличие от string.

a=”пример”;

c=a[2]; // в c будет буква ‘и’

a[2]=’a’ // буква ‘и’ заменится на ‘а’!

С точки зрения работы эти два типа практически одинаковы.

string

Инициализация

В объекте инициализация выполняется КОНСТРУКТОРОМ. Перегруженным конструктором называется конструктор с различным синтаксисом инициализации

  1. string s; // размер строки не определен и зависит от того, что ей потом будет присвоено
  1. string s = “пример”; // аналогично первому, только задается начальное значение
  1. string s = new string(20); //длина строки устанавливается в 20 символов
  1. string s = new string(‘+’,20); // аналогично третьему, только строка заполняется всеми знаками «+»
  1. string s = new string(а); //аналогично 2, только начальная строка берется из массива символов а => char[ ]

Операции над строками

+ - сцепление строк

“abc” + “def” // будет “abcdef”

[ ] – обращение к символу строки

D=A[2] // в D будет записан 3-й символ строки A

Методы и свойства string

Length – (свойство) текущая длина строки в символах

S.Length

S.Substring (3) – выделение подстроки начиная с 4 символа и до конца строки

S.Substring (5,3) - выделение подстроки длиной 3 символа, начиная с шестого символа

Остальное стр. 144

Пример:

St = s.Substring(3).Remove(12,2)

       
   


Возвращает подстроку, удаляет 2 символа, начиная с 12

начиная с 4-го символа

и до конца

Часть методов класса string являются статическими, т.е. независимыми от экземпляра. Если метод статический, то к нему надо обращаться через указание класса string:

String.Join(“!”, mas); // для статического метода нет экземпляра!

StringBuilder

Инициализация возможна только с использованием new:

StringBuilder s = new StringBuilder(); //создается пустая строка длиной 16 байт

StringBuilder s = new StringBuilder (100); //создается пустая строка длиной 100 символов

StringBuilder s = new StringBuilder(“abc”); //создается строка «abc» длиной будет 3 cимвола

StringBuilder s = new StringBuilder(“abc”, 100);

StringBuilder s = new StringBuilder(“фапр”,1,3,100); // создается строка длиной 100 символов, в которую записывается начальная строка “апр”

СТР 147 см.

пример метода s.AppendFormat:

а=1; b=1;

StringBuilder s = new StringBuilder(“s=”);

s.AppendFormat (“{0} и m={1}”, a,b);

будет в s: «s=1 и m=2» - строка как и при выводе в файлы


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: