Предмашинная подготовка задачи определения площади круга

Полный вариант создания программного продукта этой задачи (без рассмотрения элементов теории алгоритмического языка) выполним задачей (3.2) определения площади круга.

Постановка задачи

Рассчитать площадь круга в квадратных метрах и квадратных миллиметрах, если его диаметр равен 76,3 см.

Создание математической модели задачи

Исходные данные

(основные)

d = 76,3 см диаметр круга;
= 3,1416 число Пи;
  (дополнительные)  
kм = м/см коэффициент перевода сантиметров в метры;
kмм = 10 мм/см коэффициент перевода сантиметров в миллиметры.
     

Расчётные зависимости

[ ] диаметр круга, м;
[ ] диаметр круга, мм;
[ ] площадь круга, м2;
[ ] площадь круга, мм2.

Выбор метода решения

Анализ математической формулировки позволяет сделать вывод, что решение сводится к последовательному однократному выполнению небольшого количества математических зависимостей, не содержащих нестандартных трансцендентных функций. Следовательно, в качестве метода решения необходим простой линейный вычислительный процесс.

Составление алгоритма решения

Анализ полученной математической модели (достаточно простой) и выбранного метода решения (простейшего) позволяет выполнить графическую схему алгоритма решения в один шаг (рис. 3.14).

Рис. 3.14. Схема алгоритма задачи о площади круга

Программирование задачи

Идентификация переменных представлена табл. 3.20.

Таблица 3.20

Обозначение в алгоритме d kМ kММ dМ dММ SМ SММ
Обозначение в программе d PI km kmm dm dmm sm smm

С учётом таблицы идентификации на основании схемы алгоритма запишем программу решения задачи (предписываемый блоком 2 ввод переменной PI выполним не напрямую – оператором ввода, а с помощью заменяющей директивы):

#include<stdio.h> /* включающие */

#include<stdlib.h> /* директивы */

#include<math.h> /* препроцессора */

#define PI 3.1416 /* заменяющая директива препроцессора */

main( )

{

float d, km, kmm, /* описание локальных */

dm, dmm, sm, smm; /* переменных */

scanf(“%4f%5e%3f”, &d, &km, &kmm);

fprintf(stdout,“\nd=%5.2f PI=%6.4f km=%7.2e kmm=%4.1f”, d,PI,km,kmm);

dm=d*km;

dmm=d*kmm;

sm=PI*pow(dm/2.,2);

smm=PI*pow(dmm/2.,2);

fprintf(stdout,“\n dm=%8.4f dmm=%8.1f sm=%8.4f”

“smm=%8.1f \n”, dm, dmm, sm, smm);

}

76.31.e-210.

Последняя строка, под закрывающей программу фигурной скобкой, задаёт численные значения вводимых оператором scanf переменных.

Результаты решения представлены в приложении 3.2.

Заключение

Линейный – простейший вычислительный процесс. Назначение – организация последовательного однократного выполнения всех запланированных вычислений задачи. В чистом виде встречается редко. Большинство реальных вычислений – псевдолинейны (используют подпроцессы реализации различных трансцендентных функций).

Изучение линейного процесса – основа получения первоначальных навыков программирования на языке высокого уровня. Рабочий язык – Си/Си++. Основные компоненты – алфавит, элементарные конструкции, выражения, операторы, функции.

Алфавит – совокупность букв, цифр, специальных символов, используемых в языке.

Элементарные конструкции – составные конструкции алгоритмического языка. Типичные представители – ключевые слова, константы, переменные, вызовы функций.

Выражения – совокупности элементарных конструкций, предписываемые задачей. Варианты – арифметические и логические.

Операторы – основные конструкции языка высокого уровня. Программные аналоги конкретных предписаний алгоритма решения задачи.

Функции – базовые конструкции языка Си/Си++. Обеспечивают модульность программ решения задачи.

Структура Си/Си++-программы – заголовок и тело программы. Состав заголовка – комментарии, директивы препроцессора, объявление глобальных переменных.

Структура тела программы – последовательность главной и дополнительных функций. Состав любой функции – ее заголовок и тело.

Тело функции – объявления локальных переменных, операторы, комментарии.

Абсолютное следование сути определения линейных вычислений (однократность выполнения) – причина их малой эффективности для ЭВМ.

В обозримом будущем использование линейных процессов в программировании неизбежно. Залог повышения эффективности их использования – универсальность создаваемого программного продукта (возможность распространения на целый класс однотипных задач).

Вопросы для контроля

Что такое линейный вычислительный процесс?

Как классифицируются линейные процессы?

Каков алфавит языка Си/Си++?

Каковы структуры констант, примеры их записи?

Что такое переменная, имя переменной?

Какова структура описателей переменных?

Как реализуется структура функций, вызов функций?

Каковы правила составления и выполнения арифметических выражений?

Для чего используется оператор присваивания, какова его структура?

Какова структура оператора ввода и его спецификаторов?

Какова структура операторы вывода и их спецификаторов?

Как выглядит общая структура Си/Си++-программы?

Для чего используются препроцессор и его директивы?

Какова поэлементная структура простейшей программы?