
- •Технология программирования линейных процессов
- •Постановка задачи
- •Формирование математической модели
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Ключевые слова
- •Константы
- •Целые константы
- •Вещественные константы
- •Текстовые константы
- •Переменные
- •Правила записи и использования оператора
- •Функции. Вызовы функций
- •Арифметические выражения
- •Правила записи и вычисления арифметических выражений
- •Оператор присваивания
- •Правила составления и использования
- •Операторы ввода-вывода
- •Оператор ввода
- •Правила составления и выполнения оператора ввода
- •Оператор вывода на дисплей
- •Правила составления и выполнения оператора вывода
- •Оператор вывода в поток
- •Организация ввода-вывода переменных
- •Ввод переменных
- •Вывод переменных
- •Заголовок программы
- •Тело программы
- •Поэлементная структура простейшей программы
- •Предмашинная подготовка задачи определения площади круга
- •Постановка задачи
- •Создание математической модели задачи
- •Выбор метода решения
- •Составление алгоритма решения
- •Программирование задачи
- •Заключение
- •Вопросы для контроля
-
Заголовок программы
Заголовок (шапка) – начальная часть программы, предназначенная для выполнения некоторых вспомогательных операций до начала основных вычислений.
Заголовок содержит последовательность основных элементов (рис. 3.11).
Рис. 3.11. Структура заголовка программы
Комментарий – строка (строки) символов, подлежащих распечатке в тексте программы (исходном модуле).
Структура комментария:
/* текст */
, где текст – последовательность символов, создающих комментарий;
/* */ – ограничители комментария.
Комментарии могут быть заголовочными и внутренними.
Заголовочные позволяют дать общую характеристику программы (назначение, принадлежность, метод решения и т.д.). Название определяет расположение таких комментариев в начале программы.
Внутренние комментарии используют для облегчения читаемости программы (отдельных её участков). Они располагаются в тексте программы. Варианты расположения различны.
-
Внимание! Комментарий, в отличие от символьной строки, улучшает понимание текста программы, а не результатов ее выполнения.
Комментарий может содержать любое число строк. Использование вложенных комментариев запрещается.
Рассмотрим варианты выполнения комментариев.
Пример комментария в виде отдельной строки:
/* Это строчный комментарий */
Примеры многострочных комментариев представлены в табл. 3.17.
Таблица 3.17
Трёхстрочный оформленный одним |
Трёхстрочный неструктурированный |
Трёхстрочный структурированный |
/*Три строки – один комментарий */ |
/* Три строки */ /* – */ /* один комментарий */ |
/* Три строки */ /* – */ /* один комментарий */ |
Первый (левый) вариант может использоваться только в самостоятельных строках (не содержащих операторов).
Третий (второй) универсален, т.к. может применяться как в самостоятельных строках, так и завершать строки с операторами.
На основании изложенного выполним структурированный вариант конкретного заголовочного комментария:
/* Программа расчёта площади прямоугольника */
/* Линейный вычислительный процесс */
/* Разработал студент гр. А031 Юдин С.П. */
/* Дата последней модификации 12.11.2004 */
Его сокращённый вариант может иметь вид:
/* Расчёт площади прямоугольника. Линейный процесс. */
/* Разработал студент гр. А031 Юдин С.П. */
Внутренние комментарии также выполняются несколькими вариантами:
-
оформленным отдельной строкой, например
/* Формирование ввода-вывода исходных данных */
scanf(…
printf(…
-
записанным после оператора, например
int p; /* счетчик числа посетителей */
-
завершающим операторы, например
int k; /* описатели */
float x, y; /* переменных */
Директива препроцессора – указание (команда), предписывающая препроцессору выполнение конкретных действий.
-
Внимание! Область действия директив – от точки их расположения до конца программы (файла).
Следовательно, для распространения действия директивы на всю программу, ее необходимо помещать в заголовок.
Характерный признак директивы – специальный символ (#), указываемый перед ней. Между знаком # и названием директивы могут располагаться пробелы.
Наиболее распространены два вида директив;
-
включающие;
-
заменяющие (подставляющие).
Включающая директива – предписание подключения указанного в ней внешнего заголовочного файла в исходный модуль программы пользователя.
Структуры включающей директивы:
# include “СВФ”
# include <СВФ>
, где # – символ директивы;
include – название директивы (ключевое слово «включить»);
СВФ – спецификация внешнего заголовочного файла, включаемого в программу;
“ ” (< >) – ограничители СВФ.
Директива предписывает препроцессору включение в точке её расположения содержимого файла с указанной СВФ.
Ограничители < >, предписывают поиск заголовочного файла в стандартных каталогах. Ограничители “ ”, определяют начало поиска с каталога программ пользователя и продолжение поиска в стандартных каталогах.
В качестве СВФ, в большинстве случаев, используется структура:
имя.h
, где имя – идентификатор заголовочного файла;
h – тип (расширение имени) внешнего файла;
. – разделитель имени и типа.
Например, в качестве директив препроцессора могут использоваться:
П
# include
<stdio.h> # include
<stdlib.h> # include
<math.h> # include
"max.h"
Угловые скобки указывают препроцессору, что поиск этих файлов необходимо осуществлять в стандартных каталогах. Последняя директива предписывает включение файла с именем max.
Кавычки означают, что поиск файла должен начаться с каталога программ пользователя. Если препроцессор не обнаружит указанный в директиве файл, выдается сообщение об ошибке.
Количество внешних файлов, подлежащих включению в программу пользователя, не ограничено.
-
Внимание! Включаемые заголовочные файлы содержат объявления подпрограмм (функций), а не их тексты, находящиеся в библиотечных файлах.
В частности файл stdio.h содержит объявления функций необходимых при решении любых задач:
scanf – форматный ввод с клавиатуры;
printf – форматный вывод на экран;
fprintf – форматный вывод в поток.
Подставляющая директива – предписание заменить какой-либо операнд программы на указанное значение.
Структура директивы:
#define имя значение
, где # – символ директивы;
define – название директивы (ключевое слово «заменить»);
имя – идентификатор переменной;
значение – константа, заменяющая указанную именем переменную.
Представленный вариант структуры является простейшим и используется при необходимости замены поименованной величины её конкретным значением.
Подставляющая директива предписывает во всём диапазоне своего действия заменить имя (указанное слева) на значение (указанное справа).
Например, директива
#define PI 3.1416
предписывает замену идентификатора (PI) указанным значением (3.1416) при выявлении его в теле программы.
Идентификаторы рекомендуется записывать заглавными буквами.
Описатели переменных подробно рассмотрены в разд. 3.5.2.3.
Рассмотрим некоторые дополнительные сведения. В языке Си/Си++ с каждым операндом связывается область действия – часть программы, в которой этот операнд доступен. Область действия зависит от расположения описателя операнда в программе.
Переменные, в зависимости от места описания в программе, делятся на глобальные (внешние) и локальные (внутренние).
Глобальные – переменные, описанные в заголовке программы, т.е. доступные в пределах всей программы (ее исходного модуля).
В течение всего времени выполнения программы с ними ассоциированы конкретные ячейки памяти и их значения. Идентификаторы глобальных переменных желательно записывать прописными (заглавными) буквами.
Локальные – переменные, описанные внутри тела функции (блока) и доступные в ее (его) пределах, но совершенно невидимые для других функций (внешних блоков), если они имеются.
Они характеризуются «локальным» временем жизни, т. е. им выделяются новые ячейки памяти при каждом входе в блок (функцию), в котором они объявлены.
Идентификаторы локальных переменных рекомендуется записывать строчными буквами.