- •Содержание
- •Глава 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 Вложенные циклы
- •Контрольные вопросы
- •Варианты заданий для самостоятельной работы
5.1.1.1 Арифметические операции
К этой категории операций относятся те операции, которые используются для построения арифметических выражений (табл. 5.1).
Таблица 5.1 – Арифметические операции С#
-
Знак операции
Название
+
Сложение
-
Вычитание
*
Умножение
/
Деление
%
Остаток от деления
++
Инкремент
- -
Декремент
Результат вычисления выражения характеризуется значением и типом. Например, пусть х и у – переменные целого типа и описаны так:
int х = 2, у = 9;
Тогда выражение х + у имеет значение 11 и тип int, а выражение х= у имеет значение, равное значению, помещенному в переменную у, и тип, совпадающий с типом этой переменной. Хотя в таблице 5.1 присутствуют в большей части знакомые операции, без пояснений их выполнения в языке С# не обойтись. Далее приведен ряд необходимых комментариев по поводу использования помещенных в данную таблицу операций.
Знак умножения «*» опускать нельзя, он везде проставляется явно.
Унарный знак «+», поставленный перед величиной, не оказывает никакого влияния на значение этой величины. Унарный знак «-« в такой ситуации приводит к изменению знака величины.
Далее рассмотрим бинарные операции.
-
Назначение аддитивных операций: сложение и вычитание, мультипликативных: умножение «*» и деление «/» вполне ясен: возвратить результат сложения или вычитания, или умножения, или деления двух величин. Они определены для типов int, uint, long, ulong, float, double и decimal. К величинам других типов их можно применять, если для них существует неявное преобразование к этим типам. Тип результата операции равен «наибольшему» из типов операндов, но не менее int.
-
Если оба операнда при выполнении операций: сложение, вычитание, умножение целочисленные или типа decimal и результат операции слишком велик для представления с помощью заданного типа, в проверяемом контексте генерируется исключение System.OverflowException. В непроверяемом контексте исключение не выбрасывается, но отбрасываются избыточные биты.
-
Для вещественных чисел результат операций умножения или деления двух операндов даст либо конечное значение, либо 0, если результат очень мал, либо «бесконечность», если результат слишком велик.
-
Если оба операнда целочисленные, результат операции деления округляется вниз до ближайшего целого числа, например: 13/5 даст результат 2. Если делитель равен нулю, в проверяемом контексте генерируется исключение System.DivideByZeroException.
-
Если хотя бы один из операндов операции деления вещественный, дробная часть результата деления не отбрасывается.
-
Операция остаток от деления в C# может быть применена как к целым типам, так и к вещественным. При применении к целым числам операции деления «/» остаток будет отброшен. Например: операция 13/5 даст результат 2.
-
Для получения остатка от деления необходимо применять знак «%». Результат операции с целочисленными операндами вычисляется по формуле х - (х / у) * у. Например: операция 13%5 даст результат 3.
-
В C# операция «%» применима не только к целым числам, но и к числам с плавающей точкой. В этом случае результат операции вычисляется по формуле x - n * у, где n — наибольшее целое, меньшее или равное результату деления x на y.
Например: операция 13.0%5.0 даст также результат 3.
-
Операция инкремент вызывает увеличение аргумента на 1, а операция декремент – уменьшение значения аргумента на 1.
Таким образом, выражение к=к+1 аналогично выражению к++, а выражение к=к-1 аналогично выражению к--. В приведенных только что видах выражений для данных операций двойные знаки «++» или «- -» располагаются после имени переменной.
-
Вообще в C# операции инкремента и декремента имеют две формы:
-
префиксную ++к, - -к;
-
постфиксную к++, к- -.
Каждая из этих форм по-своему влияет на вычисление выражений.
-
При вычислении выражений в случае, если знак операция стоит перед операндом, вначале выполняется вычисление инкремента или декремента, а только затем новое значение операнда будет использовано в вычислении остальной части выражения.
-
Постфиксная запись указанных операций приводит к вычислению выражений при неизменном операнде, и только после получения его значения происходит изменение аргумента на единицу.