27
Язык программирования C# и платформа .NET. Операторы Максименкова Ольга Вениаминовна Старший преподаватель Кафедра управления разработкой программного обеспечения Высшая школа экономики, Москва, 2012 www.hse.ru

2. Операторы языка C#

Embed Size (px)

Citation preview

Язык программирования C# и платформа

.NET.

Операторы

Максименкова Ольга ВениаминовнаСтарший преподаватель

Кафедра управления разработкой программного обеспечения

Высшая школа экономики, Москва, 2012

www.hse.ru

ОПЕРАТОРЫ

• Условный оператор

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

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

• Универсальный цикл

ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

Условный оператор

<условие>

<оператор_1> <оператор_2>

true falseНапример,

if (x > 0) {

x = x;

}

else {

x = -x;

}

<условие>

<оператор_1>

true false

Например,

if (true) {

Console.Write(“11”);

}

Полная форма

Неполная формаФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

Программа вычисления модуля вещественного числа

using System;

class Program {

static void Main() {

double x; // число

double.TryParse(Console.ReadLine(),out x);

/*

модуль X равен X, если X >= 0

-X, если X < 0

*/

if (x >= 0)

Console.WriteLine("|x| = {0:f3}", x);

else

Console.WriteLine("|x| = {0:f3}", -x);

}

}

ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

using System;

class Program {

static void Main( ) {

double a, b, x;

Console.Write("a = ");

double.TryParse(Console.ReadLine(), out a);

Console.Write("b = ");

double.TryParse(Console.ReadLine(), out b);

if (a > b) { // упорядочиваем границы

a = a + b;

b = a - b;

a = a - b;

}

Console.Write("x = ");

double.TryParse(Console.ReadLine(), out x);

if (a <= x && x <= b) Console.WriteLine("принадлежит");

else Console.WriteLine("не принадлежит");

}

}

Программа проверки попадания числа в отрезок

М.Э. Абрамян 1000 задач по программированию, Ростов-на-Дону, 2004

Решите самостоятельно

ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

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

<выражение_условие>

<тело_цикла>

false

true

Например,

int i = 5;

do {

i--;

} while (i > 1);

Условие i

4 > 1 == true 4

3 > 1 == true 3

2 > 1 == true 2

1 > 1 == false 1

ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

Проверка корректности ввода данных

Запрос ввода данных

Получение данных

Проверка корректности ввода

Данные корректны?

Дальнейшее выполнение программы

нет

да

Например,

string line;

double x;

do {

Console.Write("Введите число: ");

line = Console.ReadLine();

} while (!double.TryParse(line, out x));

Или, пока не нажат символ ‘q’:

char ch;

string line;

do {

Console.Write("Введите символ: ");

line = Console.ReadLine();

} while (!char.TryParse(line, out ch) ||

ch != 'q’);

ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

using System;

class Program {

static void Main() {

double a, b, x;

do {

Console.Write("a = ");

} while (!double.TryParse(Console.ReadLine(), out a));

do {

Console.Write("b = ");

} while (!double.TryParse(Console.ReadLine(), out b));

if (a > b) { // упорядочиваем границы

a = a + b;

b = a - b;

a = a - b;

}

do {

Console.Write("x = ");

} while (!double.TryParse(Console.ReadLine(), out x));

if (a <= x && x <= b) Console.WriteLine("принадлежит");

else Console.WriteLine("не принадлежит");

}

}

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

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

/* Выводить квадраты вводимых пользователем с клавиатуры чисел.

Выполнение программы прекратить после ввода нуля.*/

using System;

class Program {

static void Main() {

int currNum; // введенное число

string str; // строка ввода данных

do {

Console.Write("Введите число: ");

str = Console.ReadLine();

currNum = int.Parse(str);

if (currNum != 0)

Console.WriteLine("Квадрат числа: " +

currNum * currNum);

}

while (currNum != 0);

Console.Write("\nНажмите Enter…");

Console.ReadLine();

}

}

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

<выражение_условие>

<тело_цикла>

false

true

Например,

int i = 5;

while (i > 1) {

i--;

}

Условие i

5 > 1 == true 5

4 > 1 == true 4

3 > 1 == true 3

2 > 1 == true 2

1 > 1 == false 1

ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

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

/* Распечатать первые N натуральных чисел. Значение натуральное

числа N вводится пользователем с клавиатуры. */

using System;

class Program {

static void Main() {

// имена переменных в C# регистрозависимы!

int n = 1, // переменная для членов ряда

N; // количество членов ряда

string str; // строка ввода данных

Console.Write("Введите количество чисел: ");

str = Console.ReadLine();

N = int.Parse(str);

while (n <= N) {

Console.Write(n++ + " ");

}

Console.Write("\nНажмите Enter…");

Console.ReadLine();

}

}

Решите самостоятельно

М.Э. Абрамян 1000 задач по программированию, Ростов-на-Дону, 2004

Универсальный цикл

ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

<инициализатор_цикла>

<выражение_условие>

<тело_цикла>

<завершающее_выражение>

true

false

Например,

int i = 3;

for (int j = 0; j < 7; j++) {

i = j * 2;

}

using System;

class Program {

static void Main() {

uint n;

do {

Console.Write("n = ");

} while(!uint.TryParse(Console.ReadLine(), out n)||n<2);

for (int i = 0; i < n; i++) // первая цифра

for (int j = 0; j < n; j++) // вторая цифра

for (int k = 0; k < n; k++) // третья цифра

Console.WriteLine(" " + i + j + k); // конкатенация!

}

}

Программа печати всех трехзначных чисел в системе

счисления, заданной своим основанием

Решите самостоятельно

ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

ПРИМЕНЕНИЕ ЦИКЛОВ

• Цикл повторения решения

Повторение решения

//Нажатая пользователем клавиша

ConsoleKeyInfo клавиша;

do { // цикл для повторения решения задачи

/* …. */

/* код решения задачи*/

/* …. */

Console.WriteLine("Для выхода нажмите клавишу ESC!");

клавиша = Console.ReadKey(true);

} while (клавиша.Key != ConsoleKey.Escape);

Решение задачи

Повторить выполнение?

Выход

да

нетConsoleKeyInfo Console.ReadKey(bool intercept)

получает код нажатой пользователем клавиши (символьнойили функциональной). Метод возвращает ссылку на объекттипа ConsoleKeyInfo. Код нажатой клавиши консоли -Console.ReadKey(true).Key. Перечисление ConsoleKey задаеткоды клавиш. Параметр intercept - признак визуализации.

ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

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

Оператор break, применительно к циклам, служит для принудительного

выхода из цикла.

break прекращает выполнение оператора цикла и осуществляет передачу

управления следующему за циклом оператору. Условия дальнейшего

продолжения итераций при этом не рассматриваются.

Оператор break прерывает итерации только того цикла, в котором он

размещен.

Оператор continue (оператор перехода к следующей итерации)

используется для завершения текущей итерации и перехода к проверке

условия дальнейшего продолжения цикла.

ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

ТЕСТОВЫЕ ЗАДАНИЯ

Задание с открытым ответом

21

В результате выполнения следующего фрагмента программы: int a = 7;

int i = 0;

while (a == 7) {

if (i < 4)

Console.Write(i++);

else

Console.Write(++i);

break;

}

на экран будет выведено:

0

// b = true

Использована операция присваивания вместо проверки на равенство.

Сначала переменная b получит новое значение, а затем это новое

значение будет использовано в качестве логического выражения в

конструкции if. То есть выполнится ветка else. На экране появится

число 10.

// b = false

ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

Переменная i локальна для цикла. За

его пределами мы не можем

воспользоваться ее значением,

потому что она считается не

объявленной

Область видимости

переменной i

ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

Рассмотрим полную

трассировочную

таблицу:

789340

Для вывода использованакоманда Console.Write(),следовательно, все символыбудут выведены подряд, безпробелов и на одной строке.

ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

СИСТЕМЫ СЧИСЛЕНИЙ

•Нега-позиционные системы

Нега-позиционная система счисления

Системы счисления с отрицательным основанием:

• Нега-десятичная (-10)

• Нега-двоичная (-2)

• Нега-троичная (-3)

• и т. д.

ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

Как положительные так и отрицательные числа записываются без

использования знака.

Выразите числа -10, -9, …, 9, 10 в системе счисления по основанию -2.

101000, Россия, Москва, Мясницкая ул., д. 20

Тел.: (495) 621-7983, факс: (495) 628-7931

www.hse.ru