
- •Язык c# и структура простой программы
- •Что такое .Net Framework
- •Что такое с#
- •Создание первой программы на с#
- •Пространство имен System
- •С# как язык Объектно-Ориентированного Программирования (ооп)
- •Состав и назначение файлов проекта
- •Структура сборки
- •Элементы языка c#
- •Базовый синтаксис с#
- •Переменные
- •Числа без знака
- •Числа со знаком
- •Числа для финансистов
- •Текстовые символы
- •Логический тип данных
- •Литералы с плавающей точкой
- •Символьные литералы
- •Строковые литералы
- •Выражения и операторы с#
- •Инициализация переменных и оператор присваивания
- •Значение в левой части
- •Ввод данных с консоли
- •Математические операторы
- •Вычисление остатка при целочисленном делении
- •Унарные операторы
- •Унарное логическое отрицание
- •Составные операторы
- •Поразрядные операторы
- •Поразрядное логическое и
- •Поразрядное логическое или
- •Поразрядное логическое исключающее или
- •Унарная поразрядная операция дополнения
- •Поразрядный сдвиг
- •Пример использования поразрядных операторов
- •Логические операторы
- •Операторы отношения
- •Приоритеты операторов
- •Исполнители алгоритмов
- •Исполнитель Чертежник
- •Исполнитель Робот
- •Компьютер как формальный исполнитель алгоритмов
- •Блок-схема
- •Псевдокод
- •Необходимые свойства алгоритма
- •Понятие о временной сложности алгоритма
- •Примеры
- •Правила для определения сложности
- •Тернарный условный оператор
- •Применение логических операций
- •Конструкция выбора
- •Примеры применения оператора выбора
- •Объединение меток case
- •Пропущенный break
- •Пример программы: Простые числа
- •Пример обработки одномерного массива чисел
- •Использование генератора случайных данных
- •Использование оператора foreach
- •Типы задач обработки одномерных числовых массивов
- •Поиск элемента в массиве
- •Многомерные массивы
- •Базовые операции со строками
- •Методы типа string
- •Копирование и клонирование строк
- •Конкатенация строк
- •Извлечение подстроки
- •Вставка подстроки
- •Замена символов и строк
- •Удаление символов из строки
- •Удаление незначащих пробелов
- •Преобразование к верхнему и нижнему регистру
- •Выравнивание по левому и правому краю поля
- •Объединение массива строк
- •Разбор строки
- •Сравнение строк
- •Форматирование текстовых строк
- •Функции
- •Описание и использование функций
- •Возвращаемые значения
- •Передача параметров
- •Выходные параметры
- •Область действия переменных
- •Область действия переменных и управляющие конструкции
- •Рекурсия
- •Параметры функции Main()
- •Перегрузка функций
- •Перечислимый тип
- •Определение перечислимых типов
- •Структуры
- •Описание структур
- •Использование структур в качестве параметров функций
- •Использование структур в качестве возвращаемых значений функций
- •Функции структур
- •Файлы и потоки
- •Основные классы ввода и вывода
- •Классы для работы с потоками
- •Классы для работы с потоками текстовых символов
- •Работа с текстовыми файлами
- •Запись двоичных данных
- •Пример программы для работы с двоичным файлом
- •Просмотр содержимого каталога
- •Получение информации о каталоге
Исполнители алгоритмов
Задача составления алгоритма не имеет смысла, если не известны или не учитываются возможности того, кто будет его выполнять, т.е. исполнителя. В качестве исполнителя может выступать человек, какое-либо устройство, в том числе и автомат. Например, исправный автомат по продаже газированной воды работает согласно разработанному специально для него алгоритму.
В ряду всевозможных автоматов компьютер является лишь частным (хотя и наиболее впечатляющим) примером исполнителя, чье поведение реализуется на основе алгоритма. Более того, создание компьютеров оказало воздействие на развитие теории алгоритмов — одной из областей математики. От компьютера, как от любого другого исполнителя, требуется четкое выполнение команд алгоритма. А от разработчиков алгоритмов работы компьютера требуется знание и соблюдение правил их составления.
Точное определение исполнителя дать очень трудно, да и в этом нет необходимости. Важно понять основные характеристики исполнителя:
Среда - это «место обитания» исполнителя. Например, исполнитель Чертежник обитает на бесконечном листе бумаги, а исполнитель Робот имеет клетчатое поле.
Система команд. Каждый исполнитель может выполнять команды только из некоторого строго заданного множества. Знать систему команд исполнителя это значит:
знать название или обозначение каждой команды исполнителя;
знать, каким образом она передается исполнителю;
знать, как выполняется каждая команда.
Формальное исполнение. Исполнитель ничего не знает о цели алгоритма. Он выполняет все полученные команды, не задавая вопросов «почему?» и «зачем?».
Управление исполнителями заключается в последовательном вызове команд. Человек дает команду исполнителю, анализирует результат, отдает следующую команду и т.д.
Исполнитель Чертежник
Чертежник предназначен для построения рисунков, чертежей, графиков и т.д. на бесконечном листе бумаги. Чертежник имеет перо, которое можно поднимать, опускать и перемещать. При перемещении опущенного пера за ним остается след – отрезок от старого положения пера до нового. Всего Чертежник умеет выполнять четыре команды:
Опустить перо;
Поднять перо;
Сместиться в точку (х, у);
Сместиться на вектор (а, b).
По команде «Опустить перо» Чертежник опускает перо. Если перо уже было опущено, Чертежник не выполняет никаких действий, но и отказа не происходит. Таким образом, после выполнения команды «опустить перо» перо оказывается опущенным (готовым к рисованию) независимо от его предыдущего положения.
Аналогично по команде «Поднять перо» перо будет поднято. Выполнение этой команды тоже не может привести к отказу.
Команды «Сместиться в точку» и «Сместиться на вектор» перемещают перо Чертежника. Если при этом перо опущено, на бумаге остается след. Таким образом, эти команды позволяют строить чертежи и рисунки.
Исполнитель Робот
Робот действует на прямоугольном клетчатом поле. Между некоторыми клетками могут быть расположены стены. Какие-то клетки могут быть закрашены. Сам Робот всегда занимает ровно одну клетку поля.
Робот умеет выполнять всего 17 команд: 5 команд-приказов и 12 команд-вопросов.
Команды – приказы: «Вверх», «Вниз», «Вправо», «Влево», «Закрасить».
По командам «Вверх», «Вниз», «Вправо», «Влево» Робот перемещается в соседнюю клетку в указанном направлении. Если на пути оказывается стена, команда не может быть выполнена, т.е. возникает отказ.
По команде «Закрасить» Робот закрашивает клетку, в которой стоит. Если клетка уже была закрашена, она останется закрашенной, т.е. команда будет выполнена, но никаких видимых изменений не произойдет.