- •1. Основные этапы разработки программных продуктов
- •1.1 Постановка задачи
- •Словесная формулировка
- •Формульная постановка задачи
- •1.2 Создание программного продукта
- •1.2.1.Формирование математической модели
- •Формирование исходных данных
- •Составление расчётных зависимостей
- •Правила формирования математической модели.
- •1.2.2.Алгоритмизация задачи
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •1.2.3. Реализация программного продукта
- •1.2.4. Работа с результатами
- •1.2.5.Анализ результатов решения
- •1.2.6.Принятие решения
- •1.2.7.Составление технической документации
- •1.3.Полная обработки задачи пользователя
- •1.4.Обеспечение эффективности разработки программных продуктов
- •2.5 Идентификаторы
- •2.6 Описание операций
- •2.6.1 Унарные операции
- •2.6.2 Бинарные операции
- •2.6.3 Пунктуаторы
- •Программирование простых ветвлений
- •4.1.5. Программирование задачи
- •Правила составления и использования
- •4.1.5.2. Операторы условной передачи управления
- •Укороченный оператор условного перехода
- •Правила записи и выполнения
- •Условная операция
- •Технология программирования арифметических циклов
- •Циклы с аналитическим заданием аргумента
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма
- •Оператор цикла с предусловием
- •Правила записи и выполнения
- •Оператор цикла с постусловием
- •Правила записи и выполнения
- •Оператор пошагового цикла for
- •Правила записи и выполнения
- •Программа по алгоритму цикла с предусловием
- •Программа по алгоритму цикла с постусловием
- •Программа по алгоритму цикла с параметром
- •Циклы с табличным заданием аргумента
- •Описание массивов
- •Описатель имя[размер];
- •Обозначение элементов массива
- •Имя[индекс]
- •Описатель имя[разм_1] …[разм_i]… [разм_n];
- •Постановка задачи
- •Математическая формулировка
- •Выбор метода решения
- •Составление алгоритма решения
- •Алгоритмизация структурой цикла с предусловием
- •Алгоритмизация структурой цикла с постусловием
- •Алгоритмизация структурой цикла с параметром
- •Программирование задачи
- •Описание массивов
- •Обозначение элементов массива
- •Составление программ решения задачи
- •Улучшение качества программных продуктов
- •Организация ввода-вывода Использование укороченных спецификаторов
- •Ввод переменных
- •Вывод переменных
- •Организация ввода в диалоге
- •Варианты ввода массивов
- •Оформление выводимых величин
- •Управление выполнением программ Использование составных присваиваний
- •Выбор устройства вывода
- •Повторение расчётов
- •Приостановка вывода
- •Очистка экрана
- •Позиционирование курсора
- •Пример улучшения качества
- •Программирование с использованием подпрограмм
- •Имя (фактические параметры)
- •Подпрограмма с одним результатом
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Подпрограмма с аргументом – одномерным массивом
- •Постановка задачи примера
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Подпрограмма с несколькими результатами
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Подпрограмма с результатом – массивом
- •Постановка задачи
- •Математическая формулировка
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Обработка текстовой информации в Си Символьные строки
- •Определение значения символьной строки
- •Массивы строк
- •Ввод строки
- •Выделение памяти
- •Функции ввода символьной строки
- •Функция ввода символьной строки gets( )
- •Функция ввода символьной строки scanf( )
- •Преобразование символьных строк
- •Функцияatoi( )
- •Функцияatol( )
- •Функцииatof( ) иatold( )
- •Методика ввода числовых данных с использованием функцииgets( )
- •Вывод строки
- •Вывод строки функциями printf( ) и fprintf( )
- •Вывод строки функциямиputs( ) и fputs( )
- •Перевод чисел в формат символьной строки
- •Обработка символьных строк
- •Определение длины строки
- •Объединение строк
- •Копирование строк
- •Сравнение строк
- •Функции по работе с датой и временем.
- •Структуры.
- •Работа с дисками.
- •Ввод-вывод потока.
- •Открытие потока.
- •Объектно−ориентированное программирование
- •Классы ObjectWindows
- •Приложение коды клавиш
- •Краткий справочник по Си
- •Оператор вывода на принтер
- •Структура оператора
- •Структура оператора
- •Структура оператора
- •Библиографический список
Составление алгоритма
Возможны две методики составления алгоритма циклического процесса арифметического типа:
Вариант 1 а) Сформировать первое текущее значение параметра (аргумента) цикла (xi); б) проверить полученное значение (xi) на соответствие диапазону счета. Если условие не выполняется – выйти из цикла. Если выполняется – сохранить естественный порядок вычислений – перейти к пункту в); в) вычислить текущее значение искомой функции ( yi = f ( xi ) ); г) зафиксировать текущие значения аргумента и функции (xi , yi ); д) сформировать новое текущее значение параметра цикла (xi=xi-1+x); е) перейти к пункту б). |
Вариант 2 а) Сформировать первое текущее значение параметра (аргумента) цикла (xi); б) рассчитать текущее значение искомой функции ( yi = f ( xi) ); в) зафиксировать текущие значения аргумента и функции (xi , yi ); г) сформировать новое текущее значение параметра цикла (xi=xi-1+x); д) проверить полученное значение (xi) на соответствие диапазону счета. Если условие повторения цикла выполняется – нарушить естественный порядок выполнения – перейти к пункту б), в противном случае – выйти из цикла. |
Анализ представленных методик позволяет сделать выводы:
первый вариант выполняет формальное требование проверки всехтекущих значений параметра цикла (xi) на соответствие диапазону счета;
второй вариант предполагает ненужность проверки первого значения xi, т.к. для него условие повторения цикла должно выполняться автоматически;
по месту проведения проверки параметра цикла (xi) на соответствие диапазону изменения первый вариант формирует цикл с предусловием, второй – с постусловием.
Алгоритмы, реализующие для рассматриваемой задачи каждую из методик, представлены схемами рис. 5.4 и 5.5.
Внимание! Формирование тела цикла в любой из схем происходит при выполнении условия повторения цикла. При этом в цикле с предусловием сохраняется естественный порядок выполнения блоков, а в цикле с постусловием – нарушается.
Алгоритмы содержат все необходимые элементы циклического процесса:
вход в цикл (блоки 4);
тело цикла (блоки 6, 7, 8);
выход из цикла (блок 5 рис. 5.4; блок 9 рис. 5.5).
Расчёт количества повторений N может быть осуществлён вне тела цикла в любом месте алгоритма.
Схема алгоритма цикла с предусловием (рис. 5.4) может стать более компактной, если функции трех блоков (4, 5, 8) передать одному блоку «начало цикла». Модифицированный алгоритм представлен схемой рис. 5.6. Он реализует стандартную структуру цикла с параметром. При этом блок «начало цикла» формирует начальное значение параметра цикла и проверяет его на соответствие диапазону изменения. Если условие выполняется – сохраняет естественный порядок вычислений (предписывает однократное выполнение тела цикла), а затем вычисляет новое значение параметра и предписывает его очередную проверку на соответствие заданному диапазону. При невыполнении проверяемого условия – управление передается блоку, следующему за телом цикла.
Внимание! Алгоритмы цикла с параметром совмещают два стандартных элемента циклического процесса – вход в цикл и выход из него (блок 4). Тело цикла образуют блоки 5 и 6.
Рис.5.4.Цикл с предусловием Рис.5.5.Цикл с постусловием Рис.5.6.Цикл с параметром
Представленные схемы выполнены в стандартном (унифицированном) изображении. Они наглядны, но недостаточно информативны, т.к. не позволяют понять логику переходов при проверке условий. Этого недостатка лишены развёрнутые изображения алгоритмов (рис. 5.7).
Программирование задачи
Анализ алгоритмов, реализующих циклы с пред- и пост-условиями, позволяет сделать вывод, что их программирование (выполнение блоков проверки условия) возможно с использованием укороченного оператора условной передачи управления вида if( усл_выр ) goto m.
Однако современный стиль программирования не рекомендует использование оператора безусловной передачи управления. Поэтому составление программ требует использования специальных конструкций языка Си – операторов цикла, позволяющих реализовать каждую из полученных схем алгоритма – цикл с предусловием, цикл с постусловием, цикл с параметром.
В Си существуют три оператора цикла. Каждый из них соответствует основному требованию структурирования – имеет один вход и один выход.