
- •Язык c# и структура простой программы
- •Что такое .Net Framework
- •Что такое с#
- •Создание первой программы на с#
- •Пространство имен System
- •С# как язык Объектно-Ориентированного Программирования (ооп)
- •Состав и назначение файлов проекта
- •Структура сборки
- •Элементы языка c#
- •Базовый синтаксис с#
- •Переменные
- •Числа без знака
- •Числа со знаком
- •Числа для финансистов
- •Текстовые символы
- •Логический тип данных
- •Литералы с плавающей точкой
- •Символьные литералы
- •Строковые литералы
- •Выражения и операторы с#
- •Инициализация переменных и оператор присваивания
- •Значение в левой части
- •Ввод данных с консоли
- •Математические операторы
- •Вычисление остатка при целочисленном делении
- •Унарные операторы
- •Унарное логическое отрицание
- •Составные операторы
- •Поразрядные операторы
- •Поразрядное логическое и
- •Поразрядное логическое или
- •Поразрядное логическое исключающее или
- •Унарная поразрядная операция дополнения
- •Поразрядный сдвиг
- •Пример использования поразрядных операторов
- •Логические операторы
- •Операторы отношения
- •Приоритеты операторов
- •Исполнители алгоритмов
- •Исполнитель Чертежник
- •Исполнитель Робот
- •Компьютер как формальный исполнитель алгоритмов
- •Блок-схема
- •Псевдокод
- •Необходимые свойства алгоритма
- •Понятие о временной сложности алгоритма
- •Примеры
- •Правила для определения сложности
- •Тернарный условный оператор
- •Применение логических операций
- •Конструкция выбора
- •Примеры применения оператора выбора
- •Объединение меток case
- •Пропущенный break
- •Пример программы: Простые числа
- •Пример обработки одномерного массива чисел
- •Использование генератора случайных данных
- •Использование оператора foreach
- •Типы задач обработки одномерных числовых массивов
- •Поиск элемента в массиве
- •Многомерные массивы
- •Базовые операции со строками
- •Методы типа string
- •Копирование и клонирование строк
- •Конкатенация строк
- •Извлечение подстроки
- •Вставка подстроки
- •Замена символов и строк
- •Удаление символов из строки
- •Удаление незначащих пробелов
- •Преобразование к верхнему и нижнему регистру
- •Выравнивание по левому и правому краю поля
- •Объединение массива строк
- •Разбор строки
- •Сравнение строк
- •Форматирование текстовых строк
- •Функции
- •Описание и использование функций
- •Возвращаемые значения
- •Передача параметров
- •Выходные параметры
- •Область действия переменных
- •Область действия переменных и управляющие конструкции
- •Рекурсия
- •Параметры функции Main()
- •Перегрузка функций
- •Перечислимый тип
- •Определение перечислимых типов
- •Структуры
- •Описание структур
- •Использование структур в качестве параметров функций
- •Использование структур в качестве возвращаемых значений функций
- •Функции структур
- •Файлы и потоки
- •Основные классы ввода и вывода
- •Классы для работы с потоками
- •Классы для работы с потоками текстовых символов
- •Работа с текстовыми файлами
- •Запись двоичных данных
- •Пример программы для работы с двоичным файлом
- •Просмотр содержимого каталога
- •Получение информации о каталоге
Курс С#
Понятие языка программирования. Уровни языков программирования
Программисты пишут программы на различных языках программирования, некоторые из которых непосредственно «понятны» компьютеру (т.е. могут быть выполнены его процессором), а другие нуждаются в промежуточной стадии трансляции. Сотни имеющихся языков могут быть подразделены на три общих типа:
Машинные языки
Ассемблерные языки (языки низкого уровня)
Языки высокого уровня
Каждый компьютер может понимать только свой машинный язык, который является естественным языком конкретного компьютера. Он тесно связан с его аппаратной частью. Машинные языки в общем случае состоят из последовательностей чисел (обычно нулей и единиц), которые являются командами на выполнение одиночных элементарных операций. Эти языки являются машинно-зависимыми, т.е. конкретный машинный язык может быть использован только с определенным типом компьютера.
Машинные языки неудобны для восприятия человеком, что можно проиллюстрировать небольшой программой, в которой к тарифной ставке прибавляются выплаты за сверхурочную работу, а результат сохраняется в переменной общей выплаты.
1300042774
1400593419
1200274027
По мере распространения компьютеров становилось очевидным, что программирование на машинных языках тормозит развитие компьютерной техники, является очень медленным и для большинства программистов непосильным занятием. Вместо последовательностей чисел, непосредственно понятных компьютеру, программисты для представления элементарных операций стали применять англоязычные аббревиатуры, которые и сформировали основу языков ассемблера (языки низкого уровня). Они оперируют понятиями команды, адреса памяти, регистры, прерывания.
Для преобразования программ, написанных на таких языках, в машинный язык были разработаны программы-трансляторы, называемые ассемблерами. Преобразование происходило со скоростью, равной быстродействию компьютера. Нижеприведенный фрагмент программы на языке ассемблера также вычисляет основную стоимость в виде суммы тарифной ставки и сверхурочных выплат. При этом программа становится более понятной, чем аналогичная на машинном языке:
LOAD BASEPAY
ADD ОVERPAY
STORE GROSSPAY
С появлением языков ассемблера использование компьютеров значительно расширилось, однако все еще требовалось написание большого количества инструкций даже для реализации решения простейших задач. Для ускорения процесса программирования были разработаны языки высокого уровня, в которых для выполнения сложных действий достаточно написать один оператор.
Программы для преобразования последовательности операторов на языке высокого уровня в машинный язык называются компиляторами. В языках высокого уровня инструкции, написанные программистами, зачастую выглядят как обычный текст на английском языке с применением общепринятых знаков математических операций. Уже знакомое нам вычисление суммарной выплаты выглядит так:
grossPay = basePay + overpay
Совершенно очевидно, что с точки зрения программистов языки высокого уровня более предпочтительны, чем любые машинные или ассемблерные языки.
(Языки сверхвысокого уровня)
. По степени ориентации на решение определенного класса задач: · проблемно-ориентированные; · универсальные.
По возможности дополнения новыми типами данных и операциями: · расширяемые; · нерасширяемые.
Язык c# и структура простой программы
Язык С# принадлежит к семейству С-подобных языков. К ним, также, относятся собственно язык С, языки С++ и Java, а также некоторые другие, рассмотрение которых выходит за рамки данного курса.
Язык С (начало 1970-х) является родоначальником этого семейства. Он был создан для написания системных программ, и на нем написана первая версия операционной системы Unix. До сих пор этот язык используется для написания небольших программ, особенно для операционных систем Unix/Linux. Этот язык отличается наличием большого количества операций низкого уровня, что сближает его с языком Ассемблера. В то же время, язык С обладает всеми управляющими конструкциями языков высокого уровня, а его компилятор формирует достаточно эффективный машинный код. Сам язык достаточно компактен и снабжен обширной библиотекой стандартных функций (С Run-Time), существенно расширяющей его возможности.
Тем не менее, современная технология разработки программных средств отдает предпочтение объектно-ориентированным языкам программирования, применение которых существенно облегчает разработку и отладку больших программных комплексов. В 1985 году на базе языка С был разработан язык С++, поддерживающий объектно-ориентированную технологию. На сегодняшний день язык C++ представляет собой один из наиболее совершенных инструментов создания прикладных и особенно системных программ. Применяя объектно-ориентированные возможности этого языка программирования, а также обширные библиотеки классов и шаблонов, программист может создавать весьма и весьма сложные приложения за приемлемое время.
Вместе с тем необходимо отметить, что освоение в полной мере всех возможностей языка C++ требует немалого времени. Составляя программы на С и C++, начинающий программист может много раз наступать на различные «грабли», прежде чем научится составлять программы с минимальным количеством ошибок. Используя гибкость языка C++, опытный программист сумеет реализовать свои идеи наилучшим образом, а начинающий рискует допустить трудно обнаруживаемые ошибки.
Язык программирования с названием Java был разработан компанией Sun Microsystems в 1995 году как объектно-ориентированное средство создания приложений, способных работать без перетрансляции на различных компьютерных платформах. С этой целью исходный текст программы преобразовывается в некоторый промежуточный байт-код, который затем интерпретируется специальной программой — виртуальной машиной Java.
С точки зрения защиты ОС язык Java предоставляет неплохое решение, так как программа Java запускается в защищенной виртуальной среде. Эта программа не имеет непосредственного доступа к физическим ресурсам компьютера и ОС, используя только те средства, что предоставлены ей в рамках виртуальной машины.
Одним из недостатков Java, сдерживающих его распространение, служит относительно невысокое быстродействие. Этот недостаток возникает из-за того, что Java — интерпретируемый язык. В настоящее время Java пользуется популярностью, например, как средство создания активных серверных Web-приложений.