- •Содержание
- •Глава 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 Вложенные циклы
- •Контрольные вопросы
- •Варианты заданий для самостоятельной работы
1.1.7 Вычисление и обработка результатов
Расчет по программе может выполнять оператор, даже незнакомый со спецификой программы. Ему должно быть известно, как запустить программу, как вести диалог, т.е. ему должны быть известны внешние характеристики программы. После расчетов осуществляется оценка полученных результатов.
Подобное разбиение на этапы подходит для разработки автономных программ и рассчитано на собственное использование. Когда программа разрабатывается в качестве комплексного программного продукта либо она автономна в разработке, но предназначена для использования другими лицами, то к данным этапам необходимо добавить и некоторые другие.
1.2 Формы записи алгоритмов
Слово «алгоритм» произошло от слова «алгоризм», обозначавшего совокупность правил выполнения четырех арифметических операций, и используется для названия точно определенной последовательности действий. В настоящее время это одно из важнейших понятий в программировании.
Алгоритм это точное и понятное предписание исполнителю совершить определенную конечную последовательность действий для решения любой конкретной задачи из некоторого класса однотипных задач.
Существуют несколько способов описания алгоритмов, отличающихся друг от друга наглядностью, компактностью, степенью формализации. Рассмотрим некоторые из них, необходимые для работы программиста.
1.2.1 Словесное описание
Словесное описание алгоритмов ориентировано, прежде всего, на исполнителя-человека. Оно представляет собой средства обычного языка, но с тщательно отобранным набором слов и фраз, не допускающим повторений, синонимов, двусмысленностей, лишних слов. Кроме того, принимаются соглашения о форме записи, порядке выполнения действий. Допускается использование математических символов.
1.2.2 Запись алгоритма с помощью схем
Запись алгоритма с помощью схем предполагает изображение с использованием графических символов-блоков, каждый из которых предписывает исполнение определенных действий. Совокупность символов образуют схему алгоритма. Графические символы между собой соединяются линиями потока информации. Основное направление потока идет сверху вниз и слева направо. Учитывая это, стрелки на схемах, совпадающие с таким потоком информации, могут не проставляться. Правила выполнения схем алгоритмов регламентирует ГОСТ 19.002-80, а изображение символов устанавливает ГОСТ 19.003-80.
Ниже в таблице 1.1 приведены изображения наиболее часто употребляемых блоков и даны пояснения к ним.
Таблица 1.1 Графические обозначения, применяемые при составлении схем алгоритмов
Название символа |
Символ |
Отображаемая функция |
Блок вычислений (процесс)
|
|
Вычислительное действие или последовательность вычислительных действий |
Логический блок (решение) |
|
Выбор направления выполнения алгоритма в зависимости от некоторых условий (условия) |
Блоки ввода-вывода |
|
Общее обозначение ввода или вывода данных (вне зависимости от физического носителя) |
|
Вывод данных, носителем которых служит документ (печатающее устройство) |
|
Начало-конец (вход-выход) |
|
Начало или конец программы, останов, вход или выход в подпрограммах
|
Предопределенный процесс (подпрограмма) |
|
Вычисления по стандартной подпрограмме или подпрограмме пользователя |
Блок модификации (заголовок цикла) |
|
Выполнение действий, изменяющих пункты алгоритма |
Соединитель |
|
Указание связи между частями схемы в пределах одной страницы |
Межстраничный соединитель |
|
Указание связи между частями схемы, расположенными на разных листах |
По отношению к блоку линии потока могут быть входящими или выходящими. При большом количестве пересекающихся линий схема становится мало наглядной. В этих случаях допускается разрывать линии потока информации, размещая на обоих концах разрыва специальный символ «соединитель». Внутри символов, обозначающих разрыв одной и той же линии, помещается один и тот же маркер (буква, цифра и др.).
Если же схема располагается на нескольких листах, то переход линий потока с одного листа на другой обозначается с помощью символа «межстраничный соединитель». При этом на листе с блоком-источником соединитель содержит номер листа и координаты блока-приемника, а на листе с блоком-приемником – номер листа и координаты блока-источника.
Внутри блоков и рядом с ними делают записи и обозначения (для уточнения выполняемых ими функций) так, чтобы их можно было читать слева направо и сверху вниз.
При выполнении схем алгоритмов необходимо выдерживать минимальное расстояние 3 мм между параллельными линиями потоков и 5 мм между остальными блоками. Вычерчивая блоки, необходимо соблюдать соотношение между высотой b и шириной блока а (b=1,5а, при а=10,15,20,…мм).
Степень детализации схемы алгоритма определяется только потребностями программиста и ничем не регламентируется. Однако следует иметь в виду, что излишне общий характер схемы нежелателен из-за малой ее информативности, а очень детальная схема проигрывает в наглядности. Поэтому, особенно для сложных и больших алгоритмов, целесообразно составлять несколько схем различных уровней детализации. Схема первого уровня изображает весь алгоритм. Схемы второго уровня раскрывают логику отдельных блоков схемы первого уровня и т.д.
Рассмотрим примеры схем алгоритмов некоторых простейших задач.
Пример 1. Даны три числа a, b, с. Определить наибольшее из них и вывести его на экран.
Рисунок 1.1 – Схема алгоритма к примеру 1
На рисунке1.1 приведена схема алгоритма решения этой задачи, где показано, что после ввода трех исходных чисел выполняется сравнение первых двух: a и b. Наибольшее из них присваивается переменной Max. После чего переменная Max сравнивается с переменной c. В том случае, если Max<c, значение Max корректируется заменой его на значение с. В заключении найденное наибольшее значение из трех исходных чисел выводится на экран монитора.
Этот способ описания алгоритмов отличается большой наглядностью и оказывается весьма полезным на ранних стадиях разработки. Он ориентирован на разработчиков программ и рассматривается как вспомогательное средство, облегчающее процесс программирования, а также как средство обмена алгоритмической информацией между программистами. При вычерчивании схемы алгоритма следует стремиться к тому, чтобы схема была наглядной, без лишних линий.
Пример 2. Дано целое натуральное число N. Обеспечить вывод на экран всех простых чисел в диапазоне от M до N, где M < N.
Рисунок 1.2 – Схема алгоритма к примеру 2
Существует ряд подходов к решению этой задачи. Схема алгоритма одного из них дана на рисунке 1.2. На ней показано, что после ввода чисел M и N по очереди в возрастающем порядке перебираются все натуральные числа от M до N. Перебор осуществляется с помощью цикла, где управляющей переменной является А. Каждое значение А подвергается целочисленному делению с определением остатка на все числа, лежащие в диапазоне от 2 до А / 2. Если остаток от деления равен нулю, происходят выход из внутреннего цикла и переход к следующему значению А. Если же внутренний цикл отработает полностью все свои итерации, значит С=0 не было получено ни разу, а, следовательно, данное значение А является простым числом и оно выводится на печать.