- •Содержание
- •Глава 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 Вложенные циклы
- •Контрольные вопросы
- •Варианты заданий для самостоятельной работы
2.2 Платформа .Nет Framework
Язык С# работает на платформе .NЕТ Framework и имеет с ней тесную связь. Во-первых, этот язык с самого начала был задуман в качестве языка написания кода для .NЕТ Framework, а во-вторых, он, в свою очередь, полностью ориентирован на библиотеки данной платформы.
Платформа .NЕТ Framework – это единая универсальная база программирования, предназначенная для построения систем широкого спектра. Вот только некоторые из них: Windows и Web-приложения, приложения баз данных, приложения для мобильных и переносных устройств, механизмы поддержки электронной почты и коммерции.
Платформа .NЕТ позволяет успешно решать не только указанные выше задачи межплатформенной переносимости и межъязыкового взаимодействия, но и другие очень важные для современных компьютерных технологий задачи, такие как: безопасность, надежность, использование готовых компонентов.
2.3 Интегрированная среда разработки Visual Studio
Данная платформа включает в себя, прежде всего, среду разработки для нескольких языков программирования, называемую Visual Studio.NET, которая предоставляет мощные и удобные средства написания, корректировки, компиляции, отладки и запуска приложений, использующих .NЕТ-совместимые языки. Это, прежде всего, языки С#, VВ.NЕТ, С++ и J#.
Совершенствуя Visual Studio, фирма Microsoft разработала новые версии пакета. Так, в систему были внесены дополнения, позволяющие создавать большие программные проекты, что сделало ее привлекательной для профессиональных программистов.
Платформа .NЕТ является открытой средой. Это значит, что компиляторы для нее могут поставляться и сторонними разработчиками. К настоящему времени разработаны десятки компиляторов для .NЕТ, например, Ada, COBOL, Delphi, Eiffel, Fortran, Lips, Oberon, Perl и Python.
Все .NЕТ-совместимые языки должны отвечать требованиям общеязыковой спецификации (Common Language Specification, CLS), в которой описываются общие для всех языков характеристики. Это позволяет использовать для разработки приложения несколько языков программирования и вести полноценную межъязыковую отладку. Все программы независимо от языка используют одни и те же базовые классы библиотеки .NЕТ.
Среда разработки обычно содержит:
-
текстовый редактор, для ввода и корректировки текста программы;
-
компилятор, для перевода программы в машинные коды;
-
средства отладки и запуска программ;
-
библиотеки, для многократно используемых элементов программ;
-
справочную систему и другие элементы.
2.3.1Общеязыковая среда выполнения clr
Каждый язык, входящий в состав Visual Studio, имеет свой компилятор с одной важной специфической особенностью: для обеспечения переносимости такой компилятор переводит программу не в исполняемый код, а в набор машинно-независимых инструкций языка СIL (Common Intermediate Language – общий промежуточный язык). Этот язык не содержит команд, зависящих от исходного языка, операционной системы и типа компьютера. Программа на языке СIL выполняется под управлением системы CLR (Common Language Runtime – общеязыковой среды выполнения).
2.3.1.1 Исполнение кода
При запуске программы система CLR переводит код с языка СIL в машинно-зависимые инструкции конкретного процессора, которые немедленно выполняются. Указанные преобразования СIL-программы в исполняемый код осуществляет JIT-компилятор («just in time»), компилируя только те части программы, которые требуется выполнить в данный момент. Каждая часть программы компилируется один раз и сохраняется в кэше для дальнейшего использования.
Двухфазное кодирование (рис. 2.1) имеет два существенных преимущества.
Первое из них заключается в том, что среда CLR может быть реализована для любой операционной системы, а это значит, что любая программа на языке СIL может быть выполнена в любом окружении, в котором реализована среда CLR.
Рисунок 2.1 – Схема двухфазного кодирования
Код, выполняемый под контролем системы CLR, называется управляемым кодом. Причем, в управляемый код включается вся системная информация, необходимая для нормального функционирования программы – метаинформация, а следовательно, не требуется регистрация отдельных частей программы (объектов, динамических библиотек и т.д.) в системном регистре.
В ходе компиляции СIL-кода в нем и метаданных (сведениях об объектах, используемых в программе, и о самой сборке) ищутся ненадежные фрагменты, плохо изолированные от других объектов, ненадежно защищенные от ошибочного или злонамеренного разрушения, проверяется правильность генерации машинного кода. Если встречается ненадежный код, то возбуждается исключение.
Второе преимущество двухфазного кодирования состоит в том, что в управляемых кодах нет информации о файловой системе компьютера, на котором исполняется программа, способах запуска программ, а значит, повышается защищенность программ и файлов от атак вирусов, злонамеренных программ, от программных ошибок.
Помимо управляемого кода программист имеет возможность использовать большое количество программ, ранее написанных для Windows. Такой род программ относят к неуправляемому коду. В Visual Studio управляемый и неуправляемый коды могут, не мешая друг другу, работать совместно.
2.3.1.2 Общеязыковая инфраструктура
Набор спецификаций, определяющих правила функционирования технологии .NЕТ, называется общеязыковой инфраструктурой (Common Language Infrastructure, CLI). К таким спецификациям относятся:
-
Common Type System (CTS) – общая система типов, определяющая возможность межъязыкового взаимодействия программ;
-
Common Intermediate Language (CIL) – общий промежуточный язык программирования;
-
Extensible Metadata – расширяемые метаданные;
-
Framework Class Library – библиотека классов, которые должна использовать любая программа в рамках технологии .NЕТ;
-
Platform Invocation Service – служба согласования платформ, обеспечивающая взаимодействие .NЕТ Framework и операционной системы;
-
Extended Portable Executable (PE) File Format – стандартный формат исполняемых файлов в Win32, имеющий в заголовке бит, присущий только технологии .NЕТ; обнаружив его, загрузчик обращается к среде CLR.
2.3.1.3 Сборки
В процессе компиляции программы создается файл (сборка) с расширением ехе или dll, который содержит код на языке IL и метаданные. Сборка может состоять из нескольких модулей. Каждая сборка имеет уникальное имя. Во время выполнения управляемый код получает дополнительное обслуживание, такое как: сборка мусора, повышенная защита, взаимодействие с неуправляемым кодом, поддержка межъязыковой отладки и др.
Сборки – фундаментальные части программ для .NЕТ Framework, наделенные следующими функциями:
-
содержит CLR-код, связанный с манифестом сборки, имеющей только одну точку входа;
-
формирует границы защиты;
-
формирует границы типа;
-
определяет границы видимости ссылок;
-
определяет границы контроля версий;
-
определяет границу распространения;
-
является единицей, для которой поддерживается параллельное выполнение.
Сборки созданы для упрощения распространения программ и контроля версий, характерных для приложений, основанных на компонентах. Сборки могут быть статическими и динамическими, последние не сохраняются на диске, а создаются непосредственно в памяти и могут быть сохранены после своего выполнения.