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

1. Типы данных. Операции. Ввод и вывод C#

Embed Size (px)

Citation preview

Page 1: 1. Типы данных. Операции. Ввод и вывод C#

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

.NET.

Простые типы, операции, операторы.

Организация ввода и вывода

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

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

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

www.hse.ru

Page 2: 1. Типы данных. Операции. Ввод и вывод C#

«Программирование» 1 курс бакалавриата «Программная

инженерия»

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

Page 3: 1. Типы данных. Операции. Ввод и вывод C#

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

Бесплатно получить установочный файл Microsoft Visual C# 2010

Express можно с официального сайта компании Microsoft по ссылке:

http://www.microsoft.com/express/Downloads/.

Page 4: 1. Типы данных. Операции. Ввод и вывод C#

Проекты и решения

• Решение (Solution)

• Проект (Project)

Project

Project 1

Project 2

Project N

Solution

Solution

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

Page 5: 1. Типы данных. Операции. Ввод и вывод C#

Программы на C#

Любая программа – это класс

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

Абстракция - существенная характеристика объекта, отличающая его от

всех других объектов и четко определяющая его концептуальные границы с

точки зрения наблюдателя.

Класс – это шаблон для объекта

(тип данных), а объект – это

экземпляр класса (переменная).

Объект обладает состоянием

поведением и

индивидуальностью.

Page 6: 1. Типы данных. Операции. Ввод и вывод C#

Типы данных

Типы-значения

Целые со знаком

byte (1 байт) short (2 байта)

int (4 байта) long (8 байт)

Целые без знака

sbyte ushort

uint ulong

С плавающей точкой

float double

Символьный

char (1 байт)

Логический

bool (true/false)

Повышенной точности

decimal

Типы-ссылок

String Array Классы пользователя

и т.д.

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

Page 7: 1. Типы данных. Операции. Ввод и вывод C#

Создание нового проекта

File -> New -> Project (Файл -> Создать -> Проект)

TemplatesConsole Application

Project typesVisual C#

NameЗадача_1

LocationПуть к папке Solution Name

По умолчанию совпадает с

именем проекта, изменим на

Тема_01

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

Page 8: 1. Типы данных. Операции. Ввод и вывод C#

Окно текстового редактора C# с заготовкой консольного

приложения

Компиляция и Исполнение:Debug -> Start Without Debugging (или Ctrl+F5)Результат:

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

Page 9: 1. Типы данных. Операции. Ввод и вывод C#

ВВОД-ВЫВОД

• Организация ввода

• Организация вывода

• Преобразование данных

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

Page 10: 1. Типы данных. Операции. Ввод и вывод C#

Организация ввода

using System;

class Program {

static void Main() {

string str = Console.ReadLine();

}

}

Данные, полученные от пользователя - строки

Ctrl+F5

Класс Console

public static string ReadLine()

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

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

Page 11: 1. Типы данных. Операции. Ввод и вывод C#

Организация вывода

using System;

class Program {

static void Main() {

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

string str = Console.ReadLine();

Console.WriteLine("Ваш текст: " + str);

}

} Ctrl+F5

Класс Console

public static void Write(<параметры>)

Выводит в стандартный поток вывода представление первого

параметра

public static void WriteLine(<параметры>)

Выводит в стандартный поток вывода представление первого

параметра, завершающееся символом конца строки

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

Page 12: 1. Типы данных. Операции. Ввод и вывод C#

Как поместить в решение второй проект?

• Открыть Обозреватель решений:

View -> Solution Explorer

• Выделить Solution ‘Тема_01’, вызвать контекстное

меню

Add -> New Project

Заменить:

Name: Задача_2

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

Page 13: 1. Типы данных. Операции. Ввод и вывод C#

Обработка ввода

using System;

class Program {

static void Main() {

int a, b; // целочисленные переменные для хранения чисел

Console.Write("Целое число: "); // ввод числа a

string str = Console.ReadLine();

a = int.Parse(str);

Console.Write("Целое число: "); // ввод числа b

str = Console.ReadLine();

int.TryParse(str, out b);

Console.WriteLine("Ваш текст: " + a + b); // вывод

}

}

Эксперименты с программой

1. Ввести вместо первого числа букву

2. Ввести вместо второго числа букву

3. Заключить a + b в круглые скобки

Ctrl+F5

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

Page 14: 1. Типы данных. Операции. Ввод и вывод C#

Методы обработки ввода

bool <тип>.TryParse(string <строка>, out <тип> <параметр>)Метод преобразует строковое представление числа (первый параметр) в эквивалентное емучисловое значение типа <тип> и присваивает это значение переменной, использованной вкачестве аргумента, заменившего второй параметр метода. Метод возвращает значение true,если преобразование выполнено успешно и false – в противном случае.

<тип> <тип>.Parse(<строка>)преобразует строковое представление числа в эквивалентное ему число типа <тип>. В случае,если строковое представление не может быть преобразовано к соответствующему типу,возникает исключение.

a = int.Parse(str);

int.TryParse(str, out b);

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

Page 15: 1. Типы данных. Операции. Ввод и вывод C#

Форматирование строк

Структура поля подстановки:

{N[,W][:S[R]]}, где

N – номер аргумента;

W – ширина поля;

S – спецификатор формата;

R – спецификатор точности.

Статья «Строки стандартных числовых форматов на msdn.microsoft.com -http://msdn.microsoft.com/ru-ru/library/dwhawy9k.aspxСтатья «Составное форматирование» на msdn.microsoft.com -http://msdn.microsoft.com/ru-ru/library/txafckwd.aspx

Спецификатор S:

С или с – валютный

D или d – целочисленный

E или e – экспоненциальный

F или f – с фиксированной точкой

G или g – «короткий» из E или F

X или x – шестнадцатеричный

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

Page 16: 1. Типы данных. Операции. Ввод и вывод C#

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

int i = 3;

double d = 1 / (double)i;

Console.WriteLine("{0} - {1}", i, d);#0 #1

Console.WriteLine("{0} - {0}", i, d);

3 - 0,333333333333333

3 - 3

Console.WriteLine("{0} - {1:f5}", i, d);

3 - 0,33333

Console.WriteLine("{1} - {2}", i, d);Исключение!!!

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

Page 17: 1. Типы данных. Операции. Ввод и вывод C#

ОПЕРАЦИИ

• Некоторые операции языка

• Тернарная операция

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

Page 18: 1. Типы данных. Операции. Ввод и вывод C#

Некоторые операции

short val = 10;

Console.WriteLine(val++);

Console.WriteLine(++val);

Console.WriteLine(val--);

Console.WriteLine(--val);

10121210

uint bin = 1;

Console.WriteLine(bin << 1);

Console.WriteLine(bin << 2);

Console.WriteLine(bin << 3);

248

uint bin = 1;

Console.WriteLine(bin << 3 == 8); True

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

Побитовые

Унарные

Логические

Page 19: 1. Типы данных. Операции. Ввод и вывод C#

Приведение типов

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

Вещественные

Целые со знакомЦелые без знака

byte

ushort

uint

ulong

sbyte

short

int

long

float

double

decimal

При компиляции

некоторых объявлений

возникают ошибки

преобразования типов.

Неявное

преобразование типов

применимо в том

случае, когда при

преобразовании

переменной одного

типа к другому не

происходит потери

информации.

Page 20: 1. Типы данных. Операции. Ввод и вывод C#

Тернарная операция

<операнд_1>?<операнд_2>:<операнд_3>

== true

== false

bool a, b, c;

a = true;

b = false;

c = true;

Console.WriteLine(!a&(b|c) ? "1" : "0");

Console.WriteLine(a & (b | c) ? "1" : "0");

int a, b, c;

// ввод значений a, b и c

int max = a > b ? a > c ? a : c : b > c ? b : c;

Console.WriteLine(max);

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

Page 21: 1. Типы данных. Операции. Ввод и вывод C#

Схема создания программы

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

Шапка

-------------------------------

Пролог

Ввод

Обработка

Эпилог

Вывод

1

2

Page 22: 1. Типы данных. Операции. Ввод и вывод C#

22

Задача

/* Задача.

Ввести значения трех переменных x, y, z.

Применяя выражения с тернарной операцией ?:,

обменять значения переменных так, чтобы

выполнялось требование:

x <= y <= z.

*/

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

Page 23: 1. Типы данных. Операции. Ввод и вывод C#

Задача

using System;

class Program {

public static void Main() {

int x, y, z;

string str; // Строка для приёма данных

23

Console.WriteLine("x = " + x);

Console.WriteLine("y = " + y);

Console.WriteLine("z = " + z);

Console.WriteLine(“Для выхода из программы нажмите ENTER.");

Console.ReadLine();

} //Конец определения метода Main()

} //Конец объявления класса Program

2

1

1

Пролог

ВыводЭпилог

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

Page 24: 1. Типы данных. Операции. Ввод и вывод C#

Задача

int a1 = 0, a2 = 0, a3 = 0;

a1 = x < y ? (z < x ? z : x) : (y < z ? y : z);

a3 = x > y ? (z > x ? z : x) : (y > z ? y : z);

// Самостоятельно определите значение а2 !!!!

x = a1; y = a2; z = a3;

24

Ввод

Обработка

Console.Write("Введите значение x: ");

str = Console.ReadLine();

int.TryParse(str, out x);

Console.Write("Введите значение y: ");

str = Console.ReadLine();

int.TryParse(str, out y) ;

Console.Write("Введите значение z: ");

str = Console.ReadLine();

int.TryParse(str, out z);

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

Page 25: 1. Типы данных. Операции. Ввод и вывод C#

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

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

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

Page 26: 1. Типы данных. Операции. Ввод и вывод C#

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

2626

Необходимо создать переменную целочисленного

типа, принимающую отрицательные значения, по модулю

не превышающие 217. Для ее объявления можно выбрать

тип данных:1. ushort

2. sbyte

3. byte

4. long

5. int

Необходимо выбрать тип данных, позволяющий представлять числа на

полуинтервале [-217; 0).

• ushort – беззнаковый тип данных;

• sbyte – знаковый байт. 1 бит отводится на знак числа и 7 бит на кодирование

значения.

• byte – беззнаковый тип данных;

• long – знаковый тип данных. Позволяет кодировать числа от –(263 – 1) до 263.

• int – знаковый тип данных. Позволяет кодировать числа от –(261 – 1) до 263.

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

Page 27: 1. Типы данных. Операции. Ввод и вывод C#

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

2727

Укажите строки кода, вставка которых в программу приведет

к выводу числа 6using System;

class Program {

static void Main() {

// TODO вставить код здесь

}

}

1. Console.WriteLine(12 >> 1);

2. Console.WriteLine(2 & 4);

3. Console.WriteLine(5 ^ 3);

4. Console.WriteLine(6 | 4);

5. Console.WriteLine(7 >> 1 << 1);

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

Page 28: 1. Типы данных. Операции. Ввод и вывод C#

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

2828

В результате выполнения фрагмента программы:

sbyte sByteValue = 115;

Console.WriteLine(sByteValue += 15);

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

1. -126

2. -3

3. 0

4. 128

5. 130

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

127 – 12 = 115

_127 -> 0111 1111

12 -> 0000 1100

115 -> 0111 0011

+ 15 -> 0000 1111

1000 0010 (дополнительный код)

Получим модуль числа. Для этого инвертируем

все разряды, включая знаковый и к

результату добавим единицу:

0111 1101

+ 1

0111 1110 <- 126 (модуль числа)

Объединяя знак и модуль, получаем ответ:

-126

Page 29: 1. Типы данных. Операции. Ввод и вывод C#

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

2929

Укажите номера строк, при компиляции которых возникнет

ошибка:1. sbyte x = -8;

2. int x = 36.6;

3. Single x = 4.6;

4. long x = 123456789;

5. string s = 12;

Тип sbyte – знаковый и -8 входит в диапазон значений переменных этого

типа.

Тип int представляет целые числа. При таком объявлении происходит потеря

значимой информации.

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

тип double. Тип Single соответствует типу float. При преобразовании

произойдет потеря значимой информации.

В переменной типа long могут храниться положительные значения не

превосходящие 263. Размещение в такой переменной числа 123456789 не

приведет к потере информации.

Неявное преобразование числа в строку не допустимо. Для преобразования

необходимо использовать метод ToString() объекта числовой переменной.ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.

Page 30: 1. Типы данных. Операции. Ввод и вывод C#

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

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

sbyte sb = -126, nb;

nb = (sbyte)(sb << 3);

Console.Write(nb);

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

Значение переменной sb типа sbyte занимает один байт и

представляется в дополнительном коде, как 1000 0010

При выполнении сдвига0001 0000 (знак потерялся – это прямой код положительного

числа)

16

Page 31: 1. Типы данных. Операции. Ввод и вывод C#

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

sbyte sb = -126;

Console.WriteLine(sb << 3);

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

31

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

Значение переменной sb типа sbyte занимает один байт и

представляется в дополнительном коде, как 1000 0010

При выполнении сдвига, сначала происходит неявное приведение

типаsbyte к типу int, то есть значение теперь занимает 4 байта

и представляется как0000 0000 0000 0000 0000 0000 1000 0010

После выполнения сдвига на 3 бита влево, получим:0000 0000 0000 0000 0000 0100 0001 0000 (знак)

Инвертируем:0000 0000 0000 0000 0000 0011 1110 1111

Добавляем единицу, получаем:0000 0000 0000 0000 0000 0011 1111 0000 (модуль)

-1008

Page 32: 1. Типы данных. Операции. Ввод и вывод C#

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

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

www.hse.ru