Памятка для работы в системе UNIX (1114932), страница 2
Текст из файла (страница 2)
В командном режиме работаюткоманды перемещения курсора. «Enter» означает переход в начало следующей строки.По командам i, a редактор переходит в режим ввода текста. Выход из этого режима осуществляется по клавише «Esc».Для перехода в режим ex нужно в командном режиме набрать : («двоеточие»). Приглашением ко вводу служит символ двоеточия. Простейшие команды: w — записать файл, w<name> записать текущий буфер в файл с данным именем, q — выход из редактора, q! —выход без записи файла, <номер строки> — переход на строку с данным номером.Если вы запутались, чтобы выйти из редактора нужно несколько раз нажать клавишу«Esc», затем клавиши : и q.Очень мощный и достаточно дружественный редактор — emacs.
Быстрый выход из негоосуществляется по клавишам «Ctrl-X» «Ctrl-C».1.9 Компиляция программВаши файлы с текстом программы на Си должны называться <имя>.c (c — маленькая!).Если есть заголовочные файлы, они имеют суффикс .h. Исполняемые файлы не имеют никакого суффикса.Каждое Ваше задание, которое Вы будете сдавать, должно находится в отдельном каталоге.После того, как файл программы создан или отредактирован, программа должна бытьскомпилирована.
Для этого используется командаgcc -Wall -g <имя файла> -o <имя исп. файла>, напримерgcc -Wall -g prog.c -o prog -lmЕсли ваша программа использует математические функции, например sqrt или fabs, прикомпиляции необходим дополнительный параметр -lm. После этого для запуска файла на4выполнение можно просто набрать имя исполняемого файла. Запуск Вашей программы никак не отличается от запуска системных программ (например, ls).
Возможно специфицировать аргументы, если ваша программа их обрабатывает.Обратите внимание, что при запуске программы на выполнение без указания пути к нейеё исполняемый файл ищется только в каталогах, указанных в переменной окружения PATH.Если текущий каталог (обозначается .) не содержится в пути поиска, при запуске программы, находящейся в текущем каталоге, требуется явное указание пути, например ./myprog.2Стиль кодирования программСтиль кодирования — это набор правил оформления программы на некотором языке.
Стили кодирования существуют для всех языков. Для языка Си существует несколькостилей кодирования. Рекомендуется нижеприведённый стиль, но вы можете использоватькакой-либо другой, кроме изобретённого вами самими.Стиль кодирования не влияет на работоспособность программ, но влияет на простоту ихпрочтения и понимания. Несоблюдение стиля кодирования является поводом для отказа вприёме задачи про практикуму.Редактор emacs поддерживает форматирование файлов при редактировании Сипрограмм. Чтобы разместить строку с правильным отступом, нажмите на клавишу «Tab».Если отступ не совпал с ожидаемым, внимательно посмотрите на программу, возможно онасодержит синтаксическую ошибку.Существует специальная программа (indent), которая переформатирует программу на Сив соответствие с указанным стилем кодирования. Для получения более подробной информации, используйте команду man indent.Обратите внимание, что все примеры программ в раздаваемых Вам материалах, отформатированы в соответствие с этими правилами.Отступы в программе следует размещать следующим образом: все директивы препроцессора начинаются с начала строки.
Определение функции оформляется следующим образом:<класс памяти> <возвр. тип> <имя функции>(<аргументы>){}фигурные скобки размещаются на отдельных строках. Пример:int main(int argc, char **argv){}Если весь заголовок функции не умещается на одной строке, продолжение заголовка выравнивается по открывающей скобке. Например,unsigned short int foo(int a,double b){}Инициализаторы сложных объектов должны располагаться на отдельной строке. Например5#define MAX_CIRCLES 10struct circle{double x, y, r;charname[16];};int ncircles = 2;struct circle circles[MAX_CIRCLES] ={{ 1.0, 2.0, 0.4, "null" },{ 3.0, 3.0, 0.1, "default" },};Отступ во вложенных блоках 2, 4, либо 8 символов, но один во всей программе.
Фигурныескобки в операторах размещаются как показано на примере:if (x > 0) {} else {}if (y > 0) {}while (1) {}for (;;) {}do {} while (x < 5);Ключевые слова отделяются от последующих символов хотя бы одним пробелом. Знакибинарных операций отделяются от своих аргументов пробелами слева и справа. Открывающие скобки не отделяются пробелами справа, а закрывающие — слева.Рекомендуется размещать только один оператор на строке.Размер функции не должен превышать размера одного экрана (24 строки). Если функциясодержит оператор switch, её размер может превышать размер одного экрана.
В противном случае, большие функции — почти всегда знак плохой организации программы. Нужноподумать о том, как разбить большую функцию на несколько функций меньшего размера.Программа не должна содержать «магических констант» в теле операторов и функций.Все такие константы должны быть вынесены в отдельные определения констант. Исключением являются константы -1, 0, 1 и 2, если это номер стандартного потока ошибок.Рекомендуется писать комментарии, описывающие назначение и параметры каждойфункции (кроме main). Кроме того, рекомендуется писать поясняющий комментарий к каждому нетривиальному фрагменту программы.Рекомендуется вставлять пустые строки между определениями переменных и началомкода функции, между функциями, между фрагментами кода, выражающими законченнуюмысль.6Запрещается использование макроопределений, нарушающих синтаксис языка.
Например#define BEGIN {#define END}Не рекомендуется использование определений функций в старом стиле. Необходимостьтакого определения вы должны обосновать. Не рекомендуется использовать определенияфункций и переменных с типом по умолчанию.Запрещается использование функций без прототипов, кроме системных функций. Запрещается явное определение прототипов системных функций.7.