Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Определение символических констант
Символической(именованной) константой называют имя в тексте программы, которое должно быть заменено на конкретное постоянное значение до трансляции. Их применение позволяет сократить текст программы и сделать ее более ясной. Обычно это некоторые общеупотребительные константы, такие как: p, e и т.п., а также константы, которые могут измениться при модификации программы. Пример. PI=3.141593 TAB_SIZE=100 Стиль записи: принято записывать символические константы прописными буквами. В примере с вычислением квадратичной формы замена размера массивов, равного 4, на константу SIZE позволяет при модификации программы сделать изменение размера в одном месте. Формат директивы определения символической константы: #define <имя> <постоянное_выражение> Пример. # define PI 3.141593 #define EOF (-1) #define PI2 (2*PI) Значение константы желательно заключать в скобки, поскольку при подстановке возможны ошибки. Пример. а) #define E (5+10) б) #define E 5+10 Подстановка 2*E в случае б) даст ошибку. Некоторые определения. Макроопределение – определение имени с помощью директивы #define. Макроподстановка – замена имени в тексте программы на значение соответствующей константы. Макровызов – появление имени символической константы в тексте. Макросредства или макросы – средства, реализующие макроподстановки. Пример. #define SIZE 10 ............... float maxmatr(float a[ ][SIZE], int *k, int *l){ ………….. } Включение файлов в текст программы Файл – любая совокупность данных, имеющая отдельную спецификацию и включенная в каталог (папку) операционной системы. Формат спецификации: <имя>.<тип (расширение)> Принятые по умолчанию типы файлов для языков C и C++: .c - исходный текст на языке C, .cpp - исходный текст на языке C++, .obj - объектный (оттранслированный) модуль, .exe - загрузочный (выполняемый) модуль, .h - заголовочный (header) файл. Включение файла в текст программы выполняется с помощью директивы вида: # include {"<спецификация_файла>"| < <спецификация_файла> > } Пример. # include <stdio.h> # include "my.h" Обычно в текст программы включают другие программные файлы (.c или .cpp) или заголовочные (.h) файлы. В заголовочные файлы принято включать общие для различных процедур символические константы, прототипы функций, другие описания и определения. Очень много .h файлов входят в состав транслятора, например, stdio.h описывает стандартный пакет библиотечных функций ввода-вывода, в частности функции scanf и printf, math.h содержит прототипы всех библиотечных математических функций.
В директиве заключение спецификации файла в "..." предписывает искать включаемый файл в папке, где находится вызов программы, а в случае его ненахождения там в определенных в среде разработки папках. Применение для этой цели <... > выполняет поиск файла в папках, определенных в среде разработки. Теперь приведем в качестве примера законченную работоспособную программу. #include <stdio.h> #define SIZE 4 /*******************************************************/ /* ВЫЧИСЛЕНИЕ КВАДРАТИЧНОЙ ФОРМЫ */ /******************************************************/ void main( void ){ float u[SIZE], /* Входной вектор */ b[SIZE][SIZE], /* Входная матрица */ v[SIZE], /* Вектор b*u */ z, /* Результат */ scalar( float [ ], float [ ]); /* Скалярное произведение векторов */ int i, j; void matrix(float [ ][SIZE], float [ ], float [ ]); printf("Исходный вектор:\n"); for (i=0; i<SIZE; i++){ scanf("%f", & u[ i ]); } printf("Исходная матрица:\n"); for (i=0; i<SIZE; i++){ for (j=0; j<SIZE; j++){ scanf("%f", & b[ i ][ j ]); } } matrix(b, u, v); z=scalar(v, u); printf("\n\n\nКвадратичная форма равна %.5g\n", z); }/* End main */ /* Умножение матрицы на вектор */ void matrix(float a[ ][SIZE], float x[ ], float y[ ]){ int i, j; for (i=0; i<SIZE; i++){ for (y[ i ]=j=0; j<SIZE; j++){ y[ i ]+=a[ i ][ j ]*x[ j ]; } } }/* End matrix */ /* Скалярное произведение векторов */ float scalar( float x[ ], float y[ ]){ int i; for (z=i=0; i<SIZE; i++){ z+=x[ i ]*y[ i ]; } return z; }/* End scalar */ Вопросы для самопроверки и контроля Вопросы для самопроверки 1. С какой позиции записываются директивы препроцессора? 2. Какова область действия директивы? 3. Можно ли обойтись без директивы #include в языке C? Контрольные вопросы 1. Что такое препроцессор? 2. В чем выгода применения директивы #define? 3. В каких заголовочных файлах находятся прототипы математических функций и функций ввода-вывода?
СТИЛЬ ПРОГРАММИРОВАHИЯ Основной принцип хорошего стиля программирования – писать так, чтобы программу могли прочесть не только машины, но и люди. Стиль – набор приемов или методов программирования, используемых для получения правильных, удобных для применения, легкочитаемых и, желательно, эффективных программ. Особый стиль – это программы, понятные лишь автору. Практически стиль – это набор рекомендаций по написанию программ, удовлетворяющих перечисленным выше принципам. Приведенные ниже рекомендации в равной степени подходят и к языку C, и к языку Basic.
9.1. Формирование листинга Исторически листингом называли распечатку текста программы. Сейчас под этим можно понимать размещение текста программы на любом носителе: бумаге, экране и т.п. Размещение инструкций. Следует записывать 1 инструкцию (кроме сложных) в строку. Причины: - соответствует требованиям структурного программирования, требующим сдвигать инструкцию по строке в соответствии с уровнем ее вложенности; - облегчает коррекцию текста. Перенос: - если слово не входит в строку, начинайте его с новой; - делайте перенос после знака операции; это даст ошибку при трансляции в случае случайного удаления строки продолжения. Пример. a=b-c Hехорошо! a=b-c- Хорошо! -(d+2); (d+2); Отступы. Отступ – это абзац, выявление структуры программы. Используется, как правило, при записи сложных инструкций, имеющих в своем составе другие инструкции. Рекомедуемый размер отступа для вложенных инструкций 4-5 позиций. Размер отступа должен быть одинаков по всей программе. Циклы. for (i=0; i<16; i++){ for i=0 to 15 c=0; c=0 for (k=0; k<12; k++){ for k=0 to 11 c+=b[k]; d[k]= sqrt (k+1); c=c+b(k): a(k)= sqr (k+1) } next k a[ i ]=c; a(i)=c } next i Условные инструкции. if (a>b){ if a>b then a=-a; a=-a b*=a; b=b*a } else { else a*=b; a=a*b b=-b; b=-b } end if При переносе инструкции строки продолжения сдвигать вправо на 5-6 позиций. Пропуск строк и пробелы. Пропуск строки – это вертикальная разрядка текста. Применение: - выделение логических частей текста; - после нарушения естественного порядка выполнения программы (инструкции continue, break, goto, различные формы инструкции exit); - выделение комментариев. Пробелы следует употреблять везде, где это улучшает читабельность программы. Пример. if (a<b && b<c){ Комментарии Цель – пояснить логику, облегчить отладку, тестирование и сопровождение программ. При написании комментариев следует учитывать уровень возможных читателей текста программы. Второй момент: когда писать? Рекомендуется записывать комментарии одновременно с текстом программы. После написания текста процедуры необходимо прочесть его и во всех местах, где возможен вопрос, прокомментировать. Вопрос о количестве (объеме) комментариев является дискуссионным. Их количество зависит от сложности логики программы, числа процедур и используемых библиотечных функций, а также от того, является ли программа коллективной разработкой или нет. Можно указать такой косвенный критерий достаточности объема комментирования: объем комментариев должен быть таков, чтобы при чтении ее текста, скажем через 1 год, можно было достаточно легко разобраться в логике и структуре программы. Можно также привести грубый количественный критерий: ориентировочный объем комментариев – 50-70% от объема кода программы. Различают следующие типы комментариев: оглавления, вводные, пояснительные. Оглавления. Разумно составлять для программ, объем кода которых превышает 300 – 500 КБ. Вводные. Записываются перед началом текста процедуры. Содержание:
- функция, выполняемая процедурой; - характеристики и особенности процедуры. Пример. /********************************************************/ /* WHEN_WHOLE_BASE */ /* Редактировать поле, если БД не разделена */ /********************************************************/ Пояснительные. Служат для пояснения: - параметров и переменных при объявлении (помещаются справа от имени); - смысла неочевидных проверок (справа от условия); - логического фрагмента процедуры (на отдельных строках перед началом фрагмента). Пример. if (agpec == NULL){ /* Hесогласованная ссылка */ Принцип комментирования: программа должна быть понятна без привлечения дополнительной документации. Имена
|
|||||||
Последнее изменение этой страницы: 2017-02-08; просмотров: 421; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.184.237 (0.023 с.) |