Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 519; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.011 с.) |