== Требования к программам == 

=== Python ===

Помимо сформулированных ниже правил, программы должны соответствовать документу ((http://www.python.org/dev/peps/pep-0008/ PEP8: Style Guide for Python Code)) из официальной документации языка Python. При сдаче задачи в ejudge проводится автоматическая проверка на соответствие программы PEP8.


==== Символы и отступы ====

Величина отступа – четыре пробела. Использование символа табуляции (символа, с кодом 9) запрещается.

Последняя строка должна завершаться символом конца строки. Пустых строк в конце файла быть не должно. В конце любой строки не должно быть пробелов.

Функции должны отделяться двумя пустыми строками. Отдельные смысловые блоки в программе должны отделяться пустыми строками.


==== Имена переменных ====

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

Допускается использование односложных имен переменных для счетчиков (i, j, k), а также если это имя фигурирует в условии задачи (N, M, K, L).

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

Если имя переменной или функции состоит из нескольких слов, то они должны разделяться символом подчеркивания или заглавными буквами. Например:
Calc****Sqrt – допустимо
calc_sqrt – божественно
calculate_square_root – допустимо, но нежелательно (слишком длинное имя)
vychislenie_kornya – недопустимо (используются русские имена)
f – недопустимо (непонятно назначение функции)

Обычно в качестве имён функций и переменных используются одно или несколько слов (или их сокращений) маленькими буквами с разделением символом подчёркивания.
Например, result, factorial, calc_factorial(n), calc_fact(n), iter, find_next_value(), apples_num и т.д. Для перевода слов можно использовать словари ((http://www.multitran.ru/ мультитран)) или ((http://slovari.yandex.ru/ словари Lingvo на яндексе))

Имена констант записываются полностью заглавными буквами. Если имя константы состоит из нескольких слов, для их разделения используются подчеркивания. Например, EPSILON, MAX_SIZE.


Имена массивов и названия типов структур должны записываться с заглавной буквы.


==== Арифметические операции ====

В одной строчке записывается одна арифметическая операция. Например:

%%(php)
a = b
b = c
%%

Бинарные операции разделяются пробелом. После запятой ставится пробел. Между именем функции и скобками пробел не ставится, с внутренней стороны скобок пробелы не ставятся

%%(php)
a = b + 2 * c
a = (b + 2) * c
print(a, b, sep = "")
%%


==== Использование констант ====

Не допускается использование чисел в программе, значение которых неочевидно. Например, запись while i < 179 или c = c + 32 недопустима.


==== Длина строки и переносы ====

Длина каждой строки не должна превышать 79 символов, а длина строки с комментарием — 72. Переносы длинных строк могут выглядеть так:
%%(php)
# Aligned with opening delimiter
foo = long_function_name(var_one, var_two,
                         var_three, var_four)

# More indentation included to distinguish this from the rest.
def long_function_name(
        var_one, var_two, var_three,
        var_four):
    print(var_one)
%%


==== Отделение операторов пробелами ====

Пробелы не ставятся, если они примыкают к скобкам изнутри:
%%(php)
Yes: spam(ham[1], {eggs: 2})
No: spam( ham[ 1 ], { eggs: 2 } )
%%

Пробелы не ставятся перед знаками препинания:
%%(php)
Yes: if x == 4: print x, y; x, y = y, x
No: if x == 4 : print x , y ; x , y = y , x
%%

Пробелы не ставятся перед скобкой у функций или у списков:
%%(php)
Yes: spam(1)
No: spam (1)
Yes: dict['key'] = list[index]
No: dict ['key'] = list [index]
%%

Бинарные операции обычно отделяются одним пробелом слева и справа. Однако, если в выражении есть операции разного приоритета (например, сложение и умножение, или сложение и возведение в степень), то пробелы у операции с бОльшим приоритетом могут быть пропущены. В любом случае количество пробелов слева и справа от оператора должно быть одинаковым.
%%(php)
Yes: i = i + 1
Yes: submitted += 1
Yes: x = x*2 - 1
Yes: hypot2 = x*x + y*y
Yes: c = (a+b) * (a-b)

No: i=i+1
No: submitted +=1
No: x = x * 2 - 1
No: hypot2 = x * x + y * y
No: c = (a + b) * (a - b)
%%


----
адрес оригинала: ((/Информатика/Архив/2014/8Б1/ПравилаНаписанияПрограмм))