1. Типы данных. Операции. Ввод и вывод C#
Post on 15-Jan-2017
533 Views
Preview:
Transcript
Язык программирования C# и платформа
.NET.
Простые типы, операции, операторы.
Организация ввода и вывода
Максименкова Ольга ВениаминовнаСтарший преподаватель
Кафедра управления разработкой программного обеспечения
Высшая школа экономики, Москва, 2012
www.hse.ru
«Программирование» 1 курс бакалавриата «Программная
инженерия»
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Бесплатно получить установочный файл Microsoft Visual C# 2010
Express можно с официального сайта компании Microsoft по ссылке:
http://www.microsoft.com/express/Downloads/.
Проекты и решения
• Решение (Solution)
• Проект (Project)
Project
Project 1
Project 2
Project N
…
Solution
Solution
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Программы на C#
Любая программа – это класс
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Абстракция - существенная характеристика объекта, отличающая его от
всех других объектов и четко определяющая его концептуальные границы с
точки зрения наблюдателя.
Класс – это шаблон для объекта
(тип данных), а объект – это
экземпляр класса (переменная).
Объект обладает состоянием
поведением и
индивидуальностью.
Типы данных
Типы-значения
Целые со знаком
byte (1 байт) short (2 байта)
int (4 байта) long (8 байт)
Целые без знака
sbyte ushort
uint ulong
С плавающей точкой
float double
Символьный
char (1 байт)
Логический
bool (true/false)
Повышенной точности
decimal
Типы-ссылок
String Array Классы пользователя
и т.д.
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Создание нового проекта
File -> New -> Project (Файл -> Создать -> Проект)
TemplatesConsole Application
Project typesVisual C#
NameЗадача_1
LocationПуть к папке Solution Name
По умолчанию совпадает с
именем проекта, изменим на
Тема_01
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Окно текстового редактора C# с заготовкой консольного
приложения
Компиляция и Исполнение:Debug -> Start Without Debugging (или Ctrl+F5)Результат:
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
ВВОД-ВЫВОД
• Организация ввода
• Организация вывода
• Преобразование данных
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Организация ввода
using System;
class Program {
static void Main() {
string str = Console.ReadLine();
}
}
Данные, полученные от пользователя - строки
Ctrl+F5
Класс Console
public static string ReadLine()
Получает очередную строку символов из стандартного потока ввода
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Организация вывода
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, Максименкова О.В.
Как поместить в решение второй проект?
• Открыть Обозреватель решений:
View -> Solution Explorer
• Выделить Solution ‘Тема_01’, вызвать контекстное
меню
Add -> New Project
Заменить:
Name: Задача_2
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Обработка ввода
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, Максименкова О.В.
Методы обработки ввода
bool <тип>.TryParse(string <строка>, out <тип> <параметр>)Метод преобразует строковое представление числа (первый параметр) в эквивалентное емучисловое значение типа <тип> и присваивает это значение переменной, использованной вкачестве аргумента, заменившего второй параметр метода. Метод возвращает значение true,если преобразование выполнено успешно и false – в противном случае.
<тип> <тип>.Parse(<строка>)преобразует строковое представление числа в эквивалентное ему число типа <тип>. В случае,если строковое представление не может быть преобразовано к соответствующему типу,возникает исключение.
a = int.Parse(str);
int.TryParse(str, out b);
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Форматирование строк
Структура поля подстановки:
{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, Максименкова О.В.
Форматирование строк при выводе
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, Максименкова О.В.
ОПЕРАЦИИ
• Некоторые операции языка
• Тернарная операция
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Некоторые операции
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, Максименкова О.В.
Побитовые
Унарные
Логические
Приведение типов
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Вещественные
Целые со знакомЦелые без знака
byte
ushort
uint
ulong
sbyte
short
int
long
float
double
decimal
При компиляции
некоторых объявлений
возникают ошибки
преобразования типов.
Неявное
преобразование типов
применимо в том
случае, когда при
преобразовании
переменной одного
типа к другому не
происходит потери
информации.
Тернарная операция
<операнд_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, Максименкова О.В.
Схема создания программы
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Шапка
-------------------------------
Пролог
Ввод
Обработка
Эпилог
Вывод
1
2
22
Задача
/* Задача.
Ввести значения трех переменных x, y, z.
Применяя выражения с тернарной операцией ?:,
обменять значения переменных так, чтобы
выполнялось требование:
x <= y <= z.
*/
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Задача
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, Максименкова О.В.
Задача
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, Максименкова О.В.
М.Э. Абрамян 1000 задач по программированию, Ростов-на-Дону, 2004
Решите самостоятельно
ФПК учителей НИУ ВШЭ 11.2012, Максименкова О.В.
Задание с несколькими верными вариантами ответа
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, Максименкова О.В.
Задание с несколькими верными вариантами ответа
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, Максименкова О.В.
Задание с кратким ответом
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
Задание с несколькими верными вариантами ответа
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, Максименкова О.В.
Задание с кратким ответом
В результате выполнения следующего фрагмента программы:
sbyte sb = -126, nb;
nb = (sbyte)(sb << 3);
Console.Write(nb);
на экран будет выведено:
Значение переменной sb типа sbyte занимает один байт и
представляется в дополнительном коде, как 1000 0010
При выполнении сдвига0001 0000 (знак потерялся – это прямой код положительного
числа)
16
В результате выполнения следующего фрагмента программы:
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
101000, Россия, Москва, Мясницкая ул., д. 20
Тел.: (495) 621-7983, факс: (495) 628-7931
www.hse.ru
top related