- •Содержание
- •Глава 1. Основные принципы разработки алгоритмов и программ 8
- •Глава 2. Знакомство с технологией .Nет 30
- •Глава 3. Установка visual studio. Консольные приложения 42
- •Глава 4. Введение в язык c# 52
- •Глава 5. Операции и выражения. Программы линейной структуры 67
- •Глава 6. Программирование ветвящихся процессов 85
- •Глава 7. Программирование циклических процессов 92
- •Предисловие
- •Введение
- •Глава 1. Основные принципы разработки алгоритмов и программ
- •1.1 Этапы решения задач на эвм
- •1.1.1 Постановка задачи
- •1.1.2 Формализация или математическая постановка задачи
- •1.1.3 Выбор или разработка метода решения
- •1.1.4 Разработка алгоритма
- •1.1.5 Программирование
- •1.1.6 Отладка
- •1.1.7 Вычисление и обработка результатов
- •1.2 Формы записи алгоритмов
- •1.2.1 Словесное описание
- •1.2.2 Запись алгоритма с помощью схем
- •1.2.3 Псевдокоды
- •1.2.4 Способ записи на языке программирования
- •1.3 Свойства, которыми должны обладать алгоритмы
- •1.4 Характеристики качества программного продукта
- •1.5 Технология программирования хороших программ
- •1.5.1 Способы проектирования алгоритмов и программ
- •1.5.2 Основные идеи структурного программирования
- •При разработке алгоритма нужно руководствоваться следующими рекомендациями:
- •1.5.3 Дополнительные рекомендации
- •1.6 Контрольные вопросы
- •Глава 2. Знакомство с технологией .Nет
- •2. 1 Причины появления новой платформы и нового языка
- •2.2 Платформа .Nет Framework
- •2.3 Интегрированная среда разработки Visual Studio
- •2.3.1Общеязыковая среда выполнения clr
- •2.3.2 Новации Visual Studio 2010
- •2.4 Основные понятия объектно-ориентированной технологии
- •2.4.1 Инкапсуляция
- •2.4.2 Полиморфизм
- •2.4.3 Наследование
- •2.4.4 Классы
- •Контрольные вопросы
- •Глава 3. Установка visual studio. Консольные приложения
- •3.1 Установка Visual Studio
- •3.2 Разработка приложений
- •3.2.1 Консольные приложения
- •3.2.1.1 Создание проекта. Основные окна среды
- •Контрольные вопросы
- •Глава 4. Введение в язык c#
- •4.1 Историческая справка
- •4.2 Основы языка с#
- •4.2.1 Алфавит языка
- •4.2.2 Лексемы языка, директивы препроцессора и комментарии
- •4.3 Типы данных
- •4.3.1 Классификация типов данных
- •4.3.2 Встроенные типы данных
- •4.3.2.1 Целые типы
- •4.3.2.2 Вещественные типы
- •4.3.2.3 Логический тип
- •4.3.2.4 Символьный тип
- •4.3.2.5 Финансовый тип
- •4.3.3 Литералы
- •4.4 Переменные
- •4.4.1 Объявления переменных
- •4.4.2 Инициализация переменных
- •4.4.3 Область видимости переменных
- •4.5 Именованные константы
- •Контрольные вопросы
- •Глава 5. Операции и выражения. Программы линейной структуры
- •5.1 Выражения
- •5.1.1 Операции
- •5.1.1.1 Арифметические операции
- •5.1.1.2 Операции отношения, сдвига с#
- •5.1.1.3 Поразрядные и логические операции с#
- •5.1.1.4 Операции присваивания
- •5.1.1.5 Условная операция
- •5.2 Преобразование и приведение типов
- •5.2.1 Присвоение переменной одного типа значения другого типа
- •5.2.2 Явное преобразование типа
- •5.2.3 Преобразование типов в выражениях
- •5.3 Класс Math
- •Математические функции можно использовать только с величинами числовых типов. Углы тригонометрических функций должны быть представлены в радианах.
- •5.4 Линейные алгоритмы и программы
- •5.4.1 Простейшие способы вывода
- •5.4.2 Простейшие способы ввода с клавиатуры
- •5.5 Примеры
- •Контрольные вопросы
- •Варианты заданий для самостоятельной работы
- •Глава 6. Программирование ветвящихся процессов
- •6.1 Условные операторы
- •6.2 Алгоритмы и программы разветвленной структуры
- •Контрольные вопросы
- •Варианты заданий для самостоятельной работы
- •Глава 7. Программирование циклических процессов
- •7.1 Понятие цикла
- •7.2 Операторы управления
- •7.2.1 Оператор goto
- •7.2.2 Специальные операторы управления
- •7.2.3 Операторы циклов
- •7.3 Программирование вычислительных процессов усложненной структуры
- •7.3.1 Итерационные циклы
- •7.3.2 Вложенные циклы
- •Контрольные вопросы
- •Варианты заданий для самостоятельной работы
4.3.2.3 Логический тип
Тип bool представляет значения истина/ложь, которые в С# определяются зарезервированными словами true и false. Таким образом, переменная или выражение типа bool будет иметь одно из этих двух значений. В С# не определено ни одно преобразование значения типа bool в целочисленное значение. Например, число 1 не преобразуется в значение true, а число 0 – в значение false.
4.3.2.4 Символьный тип
Язык программирования C# поддерживает один символьный тип данных – char. Тип char – 16-битный, так как С# использует кодировку Unicode вместо ASCII. Это позволяет отобразить все буквы, условные обозначения и другие символы всех письменностей мира, которые могут использоваться при работе с компьютером. Таким образом, тип char в С# – это беззнаковый 16-битный тип со значениями в диапазоне от 0 до 65535.
Unicode является расширением кодировки ASCII. Как уже было сказано, его первые 128 символов совпадают с символами ASCII. Это означает, что символы ASCII также допустимы в качестве символов C#. Функция Convert.ToInt32(c) возвращает порядковый номер (кодировку) символа (с), значение кода для определенного символа можно узнать также из технического описания.
Хотя тип char в С# определен как целый тип, следует помнить, что в языке отсутствует автоматическое преобразование из целых типов в char.
4.3.2.5 Финансовый тип
Для работы с денежными суммами в C# введен специальный тип decimal. Он для представления значений использует 128 разрядов в диапазоне: от 1Е-28 до 7.9Е+28. Тип decimal не относится к вещественным типам и отличается от других вещественных типов тем, что позволяет избежать ошибок округления, так как использует для представления дробной части чисел до 28 разрядов.
Величины финансового типа нельзя использовать в одном выражении с вещественными без явного преобразования типа. Использование величин финансового типа в одном выражении с целыми допускается.
4.3.3 Литералы
В программах C# литералы (константы) – это фиксированные значения. Литералы могут иметь любой тип. Компилятор, выделив константу в качестве лексемы, относит ее к одному из типов данных по ее внешнему виду. Есть определенные соглашения распознавания типа литерала по его записи (по умолчанию). Рассмотрим правила записи и интерпретации литералов различных типов (табл. 4.6).
Таблица 4.6 – Константы в С#
Константа |
Описание |
Примеры |
Логическая |
true (истина) или false (ложь) |
True false |
Целая |
Десятичная: последовательность десятичных цифр, за которой может следовать суффикс (U, u, L, l, UL,Ul, uL, ul, LU, Lu, lU, lu) Шестнадцатеричная: символы 0x или 0X, за которыми следуют шестнадцатеричные цифры (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, Е, F), а за цифрами, в свою очередь, может следовать суффикс (U, u, L, l, UL, Ul, uL, ul, LU, Lu, lU, lu) |
4 142 13356 2u 0Lu 13356L 0xA 0x1B8 0X00FF 0xAU 0x1B8LU 0X00FFl |
Вещественная |
С фиксированной точкой: Суффикс — один из символов F, f, D,d, M, m С порядком: [суффикс] Суффикс — один из символов F, f, D,d, M, m |
-3.1 .005 270 3.1F .005d 0.6E-3 .32e+5 0.2E6D .23e-5 |
Символьная |
Символ, заключенный в апострофы |
'п' 'у' ',' |
Строковая |
Последовательность символов, заключенная в кавычки |
"Пример" |
null |
Ссылка, которая не указывает ни на какой объект |
null |
Логических литералов всего два: true (истина) и false (ложь).
Целые литералы – это числа без дробной части. Поскольку в C# определено несколько целых типов, то по умолчанию считается, что типом целого литерала является тип с наименьшим диапазоном значений, в который попадает литерал, но с диапазоном не меньше чем int. Таким образом, литералы по умолчанию могут принадлежать одному из следующих типов: int, uint, long, ulong. Целые литералы могут быть представлены либо в десятичной, либо в шестнадцатеричной системе счисления. Когда компилятор распознает константу, он отводит ей место в памяти в соответствии с ее видом и значением.
Вещественный литерал по умолчанию должен обязательно содержать дробную часть. В этом случае компилятор воспринимает его как данное типа double. Вещественные литералы могут быть представлены только в десятичной системе, но в двух формах: с фиксированной точкой и с порядком. Вещественная константа с порядком представляется в виде мантиссы и порядка. Пробелы внутри числа не допускаются. Для разделения целой и дробной частей используется точка.
Если пользователя не устраивают изложенные выше правила интерпретации типов литералов по умолчанию, он может явно наделить литерал требуемым типом с помощью соответствующего суффикса, добавив его в конец литерала:
-
для типа long суффиксы l или L, например: 12L;
-
для типа uint суффиксы u или U, например: 45U;
-
для типа ulong суффиксы ul или UL, например: 45632ul;
-
для типа float суффиксы f или F, например: 9.2F;
-
для типа decimal суффиксы m или M, например: 9.32M.
Символьная константа представляет собой любой символ в кодировке Unicode. Пустая символьная константа недопустима.
Символьные константы, помимо показанной в таблице 4.6 формы представления обычного символа, имеющего графическое представление (кроме апострофа и символа перевода строки), может записываться и в других формах:
-
управляющая последовательность – '\0', '\n';
-
символ в виде шестнадцатеричного кода – '\хF', '\х74';
-
символ в виде escape-последовательности Unicode – '\uА81В'.
Управляющая последовательность интерпретируется как одиночный символ и используется для представления:
-
кодов, не имеющих графического изображения (например, \n – переход в начало следующей строки);
-
символов, имеющих специальное значение в строковых и символьных литералах, например, апострофа.
В таблице 4.7 приведены допустимые значения последовательностей. Если непосредственно за обратной косой чертой следует символ, не предусмотренный таблицей, возникает ошибка компиляции.
Таблица 4.7 – Управляющие последовательности в С#
-
Вид
Наименование
\a
Звуковой сигнал
\b
Возврат на шаг
\f
Перевод страницы (формата)
\n
Перевод строки
\r
Возврат каретки
\t
Горизонтальная табуляция
\v
Вертикальная табуляция
\\
Обратная косая черта
\’
Апостроф
\”
Кавычка
\0
Нуль-символ (Null)
Символ, представленный в виде шестнадцатеричного кода, начинается с префикса \0х, за которым следует код символа. Числовое значение должно находиться в диапазоне от 0 до 216 - 1, иначе возникает ошибка компиляции.
Escape-последовательности Unicode служат для представления символа в кодировке Unicode с помощью его кода в шестнадцатеричном виде с префиксом \u или \U, например, \u00F2, \U00010011. Коды в диапазоне от \U10000 до \U10FFFF представляются в виде двух последовательных символов; коды, превышающие \U10FFFF, не поддерживаются.
Строковые литералы представляют собой последовательность символов, заключенную в кавычки. Строка может быть пустой (записывается парой смежных двойных кавычек ""). Управляющие последовательности обоих видов могут использоваться и в строковых литералах.
Константа null представляет собой значение, задаваемое по умолчанию для величин ссылочных типов.