Программирование позволяет преобразовать полученный алгоритм в форму доступную ЭВМ с помощью системы программирования.
Система программирования – набор средств представления формализованной записи алгоритма решения задачи пользователя в виде доступном ЭВМ. Основное назначение системы программирования – создание программы решения задачи пользователя на выбранном им алгоритмическом языке.
Программирование – завершающий этап предмашинной полготовки, на котором удобный человеку алгоритм решения задачи преобразуется в запись, понятную для ЭВМ.
Этот этап выполняет пользователь-программист. Результатом работы является программа решения задачи.
Программа – алгоритм решения, записанный на доступном ЭВМ языке.
Вначале под программированием понимали непосредственный перевод человеком математического языка алгоритма на язык конкретной ЭВМ. При этом требовалось детализировать алгоритм до совокупности арифметических операций, а затем каждую из них записать в виде машинной команды, аналогично работе с калькулятором. Такое программирование приводило к получению малонаглядных программ большого объёма и требовало значительных затрат времени.
Труд программистов существенно облегчился созданием специальных (входных) языков программирования, промежуточных между математическим языком алгоритма и машинными командами ЭВМ.
Входными (алгоритмическими) называются языки эффективного программирования алгоритмов решения.
Преобразование математических предписаний алгоритма в машинную программу при использовании алгоритмического языка имеет вид (рис. 2.5).
Рис. 1.5. Схема преобразования записей алгоритма в машинную программу
При этом программист выполняет лишь запись предписаний алгоритма на выбранном входном языке. Перевод с алгоритмического языка на машинный выполняет сама ЭВМ с помощью специальной программы – транслятора (компилятора).
Входные языки могут быть высокого и низкого уровня. Уровень определяется степенью близости к математическому или машинному языку.
Языки высокого уровня существенно облегчают труд программистов, особенно непрофессионалов. Основными компонентами таких языков являются операторы.
Оператор – основная конструкция входного языка высокого уровня, позволяющая в форме, близкой к математической, записать указание соответствующего блока схемы алгоритма.
Программа на языке высокого уровня – это последовательность операторов, определяющих путь решения задачи.
Операторы выполняются ЭВМ в порядке расположения в программе. Такой порядок называется естественным.
Языки высокого уровня являются проблемно-ориентированными (например, на инженерно-технические или экономические задачи), либо универсальными. Типичные представители проблемно-ориентированных (Фортран, Кобол) и универсальных (Паскаль, Си) языков широко используются программистами любой квалификации – от начинающих, до профессионалов.
Языки низкого уровня (ассемблеры) относятся к машинно-ориентированным. Их основные конструкции аналогичны машинным командам, записанным в удобном для человека виде. Ассемблеры позволяют эффективно использовать внутренние возможности ЭВМ и необходимы, как правило, программистам-профессионалам.
В данном учебном пособии в качестве языка программирования принят Си – универсальный язык высокого уровня, ориентированный на решение прикладных и системных задач.
Каждый входной язык имеет собственные правила формирования операторов и их элементов. В Си, например, для обозначения переменных используют латинский алфавит.
Поэтому, до начала записи программы необходимо выполнить идентификацию обозначений переменных в алгоритме и будущей программе. Идентификация переменных оформляется в виде горизонтальной таблицы. Например, для задачи о картофеле (пример 2.3) она имеет вид (табл. 2.6).
Таблица 2.6
Наименование в алгоритме
|
| ПД
| ПШ
| УБ
| ПО
|
Наименование в программе
|
| pd
| psh
| ub
| po
|
Окончание табл. 2.6
| k1
| k2
| k3
| k4
| ПП
| МВ
| МП
| МТ
|
| 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.
Выполнение этапа программирования свидетельствует о достижении цели –создании программного продукта, т.е. окончании предмашинной подготовки задачи.