
- •Технология программирования линейных процессов
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Ключевые слова
- •Константы
- •Целые константы
- •Вещественные константы
- •Текстовые константы
- •Переменные
- •Правила записи и использования оператора
- •Функции. Вызовы функций
- •Арифметические выражения
- •Правила записи и вычисления арифметических выражений
- •Оператор присваивания
- •Правила составления и использования
- •Операторы ввода-вывода
- •Оператор ввода
- •Правила составления и выполнения оператора ввода
- •Оператор вывода на дисплей
- •Правила составления и выполнения оператора вывода
- •Оператор вывода в поток
- •Организация ввода-вывода переменных
- •Ввод переменных
- •Вывод переменных
- •Заголовок программы
- •Тело программы
- •Поэлементная структура простейшей программы
- •Предмашинная подготовка задачи определения площади круга
- •Постановка задачи
- •Создание математической модели задачи
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Заключение
- •Вопросы для контроля
-
Тело программы
Тело – основная конструкция программы, реализующая требования алгоритма (взаимосвязанных алгоритмов) решения.
В общем случае решение задачи объединяет один основной и несколько дополнительных алгоритмов. При этом тело программы формируется последовательностью пользовательских функций (головной и дополнительных).
В простейшем варианте решение состоит из одного (основного) алгоритма. При этом тело программы есть одна (главная) пользовательская функция.
Структуры возможных вариантов тела программы представлены на рис. 3.12.
Рис.
3.12. Варианты структур тела программы
Заголовок пользовательской функции определяется ее структурой (см. разд. 3.5.2.4).
Для главной функции в качестве имени используется идентификатор main (главная) и список параметров не указывается.
Для дополнительных пользовательских функций имена задаются разработчиком и в списке параметров перечисляются аргументы функции.
Тело главной (дополнительной) функции оформляется в виде составного оператора и объединяет используемые в решении операторы.
Тело функции детализируется последовательностью элементов (рис. 3.13).
Структуры и правила описания переменных, операторов (ввода-вывода, присваивания и т. п.) и комментариев изложены ранее.
Рис. 3.13. Структура тела функции
-
Поэлементная структура простейшей программы
Структура простейшего варианта записи программы имеет вид табл. 3.18:
Таблица 3.18
Общий вид |
Пример |
Многострочный заголовочный комментарий Директива 1 . . . Директива N Описатель гл. пер. 1 . . . Описатель гл. пер. M main( ) { Описатель лок. пер. 1 . . . Описатель лок. пер. K Оператор 1 . . . . . . |
/* Первая программа. */ /* Линейный */ /* вычислительный процесс. */ #include<stdio.h> /*директивы*/ . . . #include<math.h> int I=3; /*глобальные */ float A, B; double TOK=6.7E+2; /*переменные*/ main( ) /*заголовок функции*/ { float d2,k1; /* локальные*/ double z; int k,j=5; /* переменные*/ scanf("%5f%5f%7e", &A, &B, &d2); z=0.5*A+pow(TOK,2); k=I+j; |
Окончание табл. 3.18
Общий вид |
Пример |
. . . . . . Оператор S
} Значения ввод. перем. |
k1=k/B*log10(d2); k1=k/B*log10(d2); printf("z=%9.2e k=%4d k1=%9.2f", z, k, k1); } 37.620.058104.7e4 |
-
Внимание! Строка численных значений вводимых переменных в программу не входит.
Изложенных в разделе сведений достаточно для программирования задачи определения массы красителя.
В соответствии с общей методикой выполним программирование в два шага:
-
идентификация переменных;
-
разработка программы (ее исходного модуля).
Переменную
опишем как глобальную, все остальные
как локальные.
Идентификацию переменных в алгоритме и программе представим табл. 3.19.
Таблица 3.19
Обозначение в алгоритме |
1 |
Dдн |
Hст |
Ркр |
ПК |
Обозначение в программе |
2 |
ddn |
hst |
rkr |
pk |
Окончание табл. 3.19
1 |
|
k1 |
k2 |
Sдн |
Sст |
Sоб |
Ркрл |
Ркркг |
2 |
PI |
k1 |
k2 |
sdn |
sst |
sob |
rkrl |
rkrkg |
С учётом таблицы идентификации на основании схемы алгоритма (рис. 3.2) составим программу решения задачи. В качестве элементов программы используем рассмотренные конструкции Си/Си++ в соответствии с правилами их использования.
/* Программа расчёта массы красителя */
/* Линейный вычислительный процесс */
/* Разработал студент гр. А031 Попов И.П. */
#include<stdio.h> /* включающие */
#include<stdlib.h> /* директивы */
#include<math.h> /* препроцессора */
float PI; /* описание глобальной переменной */
main( )
{
float ddn, hst, rkr, pk, k1, k2, /* описание локальных */
sdn, sst, sob, rkrl, rkrkg; /* переменных */
scanf(“%3f%5f%6e%3f”, &ddn, &hst, &rkr, &pk);
printf(“\n ddn=%3.1f fhst=%5.0f rkr=%6.1e pk=%3.1f”,
ddn,hst,rkr,pk);
scanf(“%6f%5e%4f”, &PI, &k1, &k2);
printf(“\n PI=%6.4f k1=%7.2e k2=%4.0f \n”, PI, k1, k2);
sdn=PI*pow(ddn,2)/4.;
sst= PI*ddn*hst*k1;
sob=(sdn+sst)*k2;
rkrl=rkr*sob;
rkrkg=rkrl*pk;
printf(“\n sdn=%8.2f sst=%8.2f sob=%8.2f rkrl=%8.2f” “rkrkg=%8.2f \n”, sdn, sst, sob, rkrl, rkrkg);
}
3.26780.5.2e-31.4
3.14161.e-3100.
Последними строками, под закрывающей программу фигурной скобкой, записаны численные значения вводимых (двумя операторами scanf) переменных.
Результаты решения представлены в приложении 3.1.
Составление программы для задачи о красителе завершает этап её предмашинной подготовки – создание программного продукта линейного вычислительного процесса.