- •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
- •Приложение коды клавиш
- •Краткий справочник по Си
- •Оператор вывода на принтер
- •Структура оператора
- •Структура оператора
- •Структура оператора
- •Библиографический список
Программирование задачи
Программирование позволяет преобразовать полученный алгоритм в форму доступную ЭВМ с помощью системы программирования.
Система программирования – набор средств представления формализованной записи алгоритма решения задачи пользователя в виде доступном ЭВМ. Основное назначение системы программирования – создание программы решения задачи пользователя на выбранном им алгоритмическом языке.
Программирование – завершающий этап предмашинной полготовки, на котором удобный человеку алгоритм решения задачи преобразуется в запись, понятную для ЭВМ.
Этот этап выполняет пользователь-программист. Результатом работы является программа решения задачи.
Программа – алгоритм решения, записанный на доступном ЭВМ языке.
Вначале под программированием понимали непосредственный перевод человеком математического языка алгоритма на язык конкретной ЭВМ. При этом требовалось детализировать алгоритм до совокупности арифметических операций, а затем каждую из них записать в виде машинной команды, аналогично работе с калькулятором. Такое программирование приводило к получению малонаглядных программ большого объёма и требовало значительных затрат времени.
Труд программистов существенно облегчился созданием специальных (входных) языков программирования, промежуточных между математическим языком алгоритма и машинными командами ЭВМ.
Входными (алгоритмическими) называются языки эффективного программирования алгоритмов решения.
Преобразование математических предписаний алгоритма в машинную программу при использовании алгоритмического языка имеет вид (рис. 2.5).
Рис. 1.5. Схема преобразования записей алгоритма в машинную программу
При этом программист выполняет лишь запись предписаний алгоритма на выбранном входном языке. Перевод с алгоритмического языка на машинный выполняет сама ЭВМ с помощью специальной программы – транслятора (компилятора).
Входные языки могут быть высокого и низкого уровня. Уровень определяется степенью близости к математическому или машинному языку.
Языки высокого уровня существенно облегчают труд программистов, особенно непрофессионалов. Основными компонентами таких языков являются операторы.
Оператор – основная конструкция входного языка высокого уровня, позволяющая в форме, близкой к математической, записать указание соответствующего блока схемы алгоритма.
Программа на языке высокого уровня – это последовательность операторов, определяющих путь решения задачи.
Операторы выполняются ЭВМ в порядке расположения в программе. Такой порядок называется естественным.
Языки высокого уровня являются проблемно-ориентированными (например, на инженерно-технические или экономические задачи), либо универсальными. Типичные представители проблемно-ориентированных (Фортран, Кобол) и универсальных (Паскаль, Си) языков широко используются программистами любой квалификации – от начинающих, до профессионалов.
Языки низкого уровня (ассемблеры) относятся к машинно-ориентированным. Их основные конструкции аналогичны машинным командам, записанным в удобном для человека виде. Ассемблеры позволяют эффективно использовать внутренние возможности ЭВМ и необходимы, как правило, программистам-профессионалам.
В данном учебном пособии в качестве языка программирования принят Си – универсальный язык высокого уровня, ориентированный на решение прикладных и системных задач.
Каждый входной язык имеет собственные правила формирования операторов и их элементов. В Си, например, для обозначения переменных используют латинский алфавит.
Поэтому, до начала записи программы необходимо выполнить идентификацию обозначений переменных в алгоритме и будущей программе. Идентификация переменных оформляется в виде горизонтальной таблицы. Например, для задачи о картофеле (пример 2.3) она имеет вид (табл. 2.6).
Таблица 2.6
Наименование в алгоритме |
1 |
ПД |
ПШ |
УБ |
ПО |
Наименование в программе |
2 |
pd |
psh |
ub |
po |
Окончание табл. 2.6
1 |
k1 |
k2 |
k3 |
k4 |
ПП |
МВ |
МП |
МТ |
2 |
k1 |
k2 |
k3 |
k4 |
pp |
mv |
mp |
mt |
С учётом таблицы идентификации, алгоритма и правил составления программы выполнен простейший пример записи на Си алгоритма решения задачи о картофеле:
#include<stdio.h>
#include<math.h>
main( )
{
float pd, psh, ub, po,
k1, k2, k3, k4;
float pp, mv, mp, mt;
scanf("%3f%4f%4f%4f",&pd, &psh, &ub, &po);
scanf("%5f%5e%3f%4f",&k1, &k2, &k3, &k4);
fprintf(stdprn,"%3.1f %4.0f %4.0f %4.1f\n",pd, psh, ub, po);
fprintf(stdprn,"%5.0f %5.0e %3.1f %4.0f\n",k1, k2, k3, k4);
pp=(pd*k1*psh)*k2;
mv=ub*pp*k3;
mp=mv*po/k4;
mt=mv-mp;
fprintf(stdprn,"%f %f %f %f\n",pp, mv, mp, mt);
}
1.2750.180.12.7
1000.1.e-40.1100.
Пояснения к программе.
Первые две строки предписывают подключение к программе пользователя необходимых стандартных функций из внешних файлов stdio.h и math.h.
Третья строка – заголовок тела программы.
Четвёртая – признак начала тела программы.
Строки 5-7 – описатели типов всех данных задачи.
Строка 8 – ввод основных исходных данных.
Строка 9– ввод вспомогательных исходных данных (коэффициентов).
Строка 10 –распечатка введённых данных.
Строка 11 – распечатка коэффициентов.
Строки 12-15 – расчёт промежуточных и конечного данных.
Строка 16 – распечатка рассчитанных данных.
Строка 17 – признак окончания тела программы.
Последние две строки в программу не входят. В них записаны численные значения переменных, указанных в операторах ввода.
Рекомендации по улучшению качества программ даны в разд. 2.6.
Выполнение этапа программирования свидетельствует о достижении цели –создании программного продукта, т.е. окончании предмашинной подготовки задачи.