Участник:Shersh/Оформление — различия между версиями
Shersh (обсуждение | вклад) |
Shersh (обсуждение | вклад) (→Псевдокод) |
||
(не показано 28 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
Основные правила написаны [[Обсуждение:Дискретная математика и алгоритмы | здесь]] и [[Участник:Kirelagin/Оформление | здесь]]. | Основные правила написаны [[Обсуждение:Дискретная математика и алгоритмы | здесь]] и [[Участник:Kirelagin/Оформление | здесь]]. | ||
− | Далее приводится дополнительный список требований (что подразумевается, явно не написано, всякие уточнения, красивости, сборка из правил оформления других участников) который поможет сделать вики-конспекты красивее, лучше, понятнее | + | Далее приводится дополнительный список требований (что подразумевается, явно не написано, всякие уточнения, красивости, сборка из правил оформления других участников) который поможет сделать вики-конспекты красивее, лучше, понятнее. |
== Общие замечания == | == Общие замечания == | ||
− | * Добавляйте См. также на конспекты по смежным темам | + | * Добавляйте См. также на конспекты по смежным темам, |
− | * | + | * литературу, ссылки, просто источники и подобное заменяем на Источники информации |
− | ** | + | ** оформляйте источники информации маркированным списком; |
− | * | + | * ссылки оформляйте правильно: |
− | * | + | ** [[Участник:Shersh/Оформление#Общие замечания | интервики]] {{---}} ссылка на другой вики-конспект, |
− | * | + | ** [https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F:%D0%A4%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D1%8B внешняя ссылка] {{---}} ссылка в источниках информации, |
− | ** | + | ** примечания<ref>[http://www.antlr.org/ ANTLR {{---}} Parser generator]</ref> {{---}} ссылка на внешние ресурсы внутри текста конспекта; |
− | * | + | * не используйте заголовки первого уровня, |
+ | * используйте акронимы для описания используемых фактов, {{Acronym | которые вы не доказываете| Но лучше объяснение этого факта поместить в текст сюда}}, | ||
+ | ** но если вы ссылаетесь на какие-то статьи или ссылки, то надо использовать примечания (как это сделать, см. [[Построение FIRST и FOLLOW | тут]]); | ||
+ | * добавляйте к терминам англоязычные названия, | ||
+ | ** '''Пример''' (англ. ''example''); | ||
+ | * кстати, данный список является примером правильно оформленного маркированного списка в плане расстановки знаков препинаний и больших букв, | ||
+ | * берите задачи в [[Шаблон:Задача]], | ||
+ | * порядок разделов в конце конспекта: См. также (если есть), Примечания (если есть), Источники информации (если есть). | ||
== Tex == | == Tex == | ||
* Переменные и константы в тексте оборачивать в tex | * Переменные и константы в тексте оборачивать в tex | ||
− | * | + | *: <tex> x, ~y, ~1 </tex> (сравни x, y, 1) |
− | * | + | * классы чисел оборачивать в \mathbb |
− | * | + | *: Натуральные числа <tex> \mathbb{N} </tex> (сравни <tex> N </tex>) |
− | * | + | * классы и функции оборачивать в \mathrm |
− | * | + | *: Класс регулярных языков <tex> \mathrm{REG} </tex> (сравни <tex> REG </tex>) |
− | * | + | * вместо \mod использовать \bmod, когда применяется как бинарная операция |
− | * | + | *: <tex> x \bmod y </tex> (сравни <tex> x \mod y </tex>) |
− | * | + | * вместо \le и \ge использовать \leqslant и \geqslant |
− | * | + | *: <tex> a \leqslant b </tex> (сравни <tex> a \le b </tex>) |
− | * | + | * для сдвигов (арифметических и нет) использовать \texttt{<<} вместо << и >> |
− | * | + | *: <tex> 1\ \texttt{<<}\ b </tex> (сравни <tex> 1 << b </tex>) |
− | * | + | * хинт: можно использовать \to вместо \rightarrow и \gets вместо \leftarrow |
− | * | + | * пары обозначать в \langle \rangle, а не в больше-меньше |
− | * | + | *: <tex> \langle T, S \rangle </tex> (сравни <tex> < T, S > </tex>) |
− | * | + | * в техе заменять многоточие на \ldots |
− | * | + | *: <tex> ab \dots z </tex> (сравни <tex> ab...z </tex>) |
− | * | + | * заменяйте в tex функции log, gcd, min и другие на них аналог с лидирующем слешем, например, \log |
− | * | + | *: <tex> n \log n </tex> (сравни <tex> n log n </tex>) |
+ | * пишите дроби, используя \dfrac вместо \frac | ||
+ | *: <tex> \dfrac{1}{n} </tex> (сравни <tex> \frac{1}{n} </tex>) | ||
+ | * заменяйте | в множествах на \mid | ||
+ | *: <tex>\{ x \mid x \in X\}</tex> (сравни <tex>\{ x | x \in X\}</tex>) | ||
== Псевдокод == | == Псевдокод == | ||
− | + | # Стоит как минимум соблюдать все эти требования к оформлению псевдокода: [http://neerc.ifmo.ru/~sta/formatting3.html правила идеального форматирования кода] | |
− | + | # Старайтесь называть переменные осмысленно, когда это возможно (s = a {{---}} плохо, sz = N {{---}} уже получше, size = newSize {{---}} идеально) | |
− | + | # Дополнение к концепции Python-style (надо понимать, что фигурные скобки, лишние круглые скобки, двоеточия (но после имени функции можно) и многое другое {{---}} всё сделано для того, чтобы написать компилятор было проще, а программы компилировались быстрей, поэтому в псевдокоде надо стараться избегать всяких особенностей конкретного языка программирования, чтобы повысить читаемость кода) | |
− | ** | + | # Операторы, ключевые слова, примитивные типы данных оборачивать в тройные кавычки ('''for''', '''if''', '''return''', '''and''', '''int''' и другие) |
− | * | + | # Комментарии пишите только через //, так же можно и через /**/, но последний оформлять в построчном стиле. Главное, придерживаться одного выбранного формата в рамках конспекта. Ещё очень наглядно обозначать комментарии зелёным цветом: <font color=darkgreen> // например, вот так </font> |
− | * | + | # Подписывайте аргументы функциям и переменным в псевдокоде. Можно не обязательно всем, но чтобы не возникало динамической типизации: |
− | * | + | #* вместо '''void''' писать '''function''' или '''fun''', |
− | * | + | #* типы аргументов и функций желательно указывать через двоеточие после имени |
− | * | + | #*: '''function''' print(a: '''List<T>'''): <font color=darkgreen> // аналог '''void''' </font> |
− | + | #*: '''function''' get(index: '''int'''): '''int''' <font color=darkgreen> // функция, возвращающая '''int''' </font> | |
− | + | #*: '''function''' fill(a: '''int[n]'''): <font color=darkgreen> // функция, принимающая массив длины <tex>n</tex> </font> | |
− | + | # Использовать словесное обозначение логических операций ('''and''', '''or''', '''xor''', '''not''' вместо &&, ||, !) | |
− | + | #* Вместо побитового '''xor'''-а ^ (крышечка) лучше писать <tex> \oplus </tex> (ниже о том, зачем это нужно) | |
− | + | #* Можно переставлять логические операции для повышения читаемости: element '''not in''' set | |
− | + | # Проверку типов и приведение к типу (если вдруг понадобится) писать как '''is''' и '''as''' | |
− | + | # '''new''' _НЕ_ писать при создании экземпляра класса | |
− | + | # При нисходящем '''for''' писать '''downto''' | |
− | + | #: Можно писать '''for''' по числам через две точки ('''for''' i = 1..10) или через '''to''' ('''for''' i = 1 '''to''' 10), но надо понимать, что последний элемент итерации ''включается'', а внутри одного конспекта придерживаться одного стиля | |
− | + | # ''enum''-поля класса или константы выделять курсивом в псевдокоде | |
− | + | #: Это относится и к общеязыковым константам ''true'', ''false'' и ''null'' | |
− | + | # У методов size(), length() можно не писать круглые скобки {{---}} трудно придумать случай, когда реализация функций отличается от просто поля в экземпляре класса чем-то существенным (это уже просто инкапсуляция языков программирования) | |
− | * | + | #* len(queue), len(array) не писать {{---}} лишние скобки мешают читаемости |
− | + | #* надо заменять isEmpty на == <tex> \varnothing </tex> | |
− | + | # Разрешаемые случаи использования tex в псевдокоде: | |
− | + | #* <tex> \varnothing, \emptyset </tex> вместо null | |
− | + | #* <tex> \neq </tex> вместо != | |
− | + | #* <tex> \leqslant \geqslant </tex> вместо <= и >= | |
− | + | #* <tex> \langle, \rangle</tex> и другие виды скобок, если возвращается в функции какой-то сложный объект (например объект <tex> \mathrm{Pair} </tex>) | |
− | + | #* Теоретико-множественные операции: <tex> \cap \cup \subset \subseteq \triangle \setminus</tex> | |
− | + | #* Возведение в степень в псевдокоде не писать через ^ (путается с '''xor'''), лучше использовать tex | |
+ | #* <tex> \exists </tex> и <tex> \forall </tex>, если вдруг вам надо | ||
+ | |||
+ | == Примечания == | ||
+ | <references/> |
Текущая версия на 21:18, 7 апреля 2016
Основные правила написаны здесь и здесь.
Далее приводится дополнительный список требований (что подразумевается, явно не написано, всякие уточнения, красивости, сборка из правил оформления других участников) который поможет сделать вики-конспекты красивее, лучше, понятнее.
Содержание
Общие замечания
- Добавляйте См. также на конспекты по смежным темам,
- литературу, ссылки, просто источники и подобное заменяем на Источники информации
- оформляйте источники информации маркированным списком;
- ссылки оформляйте правильно:
- интервики — ссылка на другой вики-конспект,
- внешняя ссылка — ссылка в источниках информации,
- примечания[1] — ссылка на внешние ресурсы внутри текста конспекта;
- не используйте заголовки первого уровня,
- используйте акронимы для описания используемых фактов, которые вы не доказываете,
- но если вы ссылаетесь на какие-то статьи или ссылки, то надо использовать примечания (как это сделать, см. тут);
- добавляйте к терминам англоязычные названия,
- Пример (англ. example);
- кстати, данный список является примером правильно оформленного маркированного списка в плане расстановки знаков препинаний и больших букв,
- берите задачи в Шаблон:Задача,
- порядок разделов в конце конспекта: См. также (если есть), Примечания (если есть), Источники информации (если есть).
Tex
- Переменные и константы в тексте оборачивать в tex
- (сравни x, y, 1)
- классы чисел оборачивать в \mathbb
- Натуральные числа (сравни )
- классы и функции оборачивать в \mathrm
- Класс регулярных языков (сравни )
- вместо \mod использовать \bmod, когда применяется как бинарная операция
- (сравни )
- вместо \le и \ge использовать \leqslant и \geqslant
- (сравни )
- для сдвигов (арифметических и нет) использовать \texttt{<<} вместо << и >>
- (сравни )
- хинт: можно использовать \to вместо \rightarrow и \gets вместо \leftarrow
- пары обозначать в \langle \rangle, а не в больше-меньше
- (сравни )
- в техе заменять многоточие на \ldots
- (сравни )
- заменяйте в tex функции log, gcd, min и другие на них аналог с лидирующем слешем, например, \log
- (сравни )
- пишите дроби, используя \dfrac вместо \frac
- (сравни )
- заменяйте | в множествах на \mid
- (сравни )
Псевдокод
- Стоит как минимум соблюдать все эти требования к оформлению псевдокода: правила идеального форматирования кода
- Старайтесь называть переменные осмысленно, когда это возможно (s = a — плохо, sz = N — уже получше, size = newSize — идеально)
- Дополнение к концепции Python-style (надо понимать, что фигурные скобки, лишние круглые скобки, двоеточия (но после имени функции можно) и многое другое — всё сделано для того, чтобы написать компилятор было проще, а программы компилировались быстрей, поэтому в псевдокоде надо стараться избегать всяких особенностей конкретного языка программирования, чтобы повысить читаемость кода)
- Операторы, ключевые слова, примитивные типы данных оборачивать в тройные кавычки (for, if, return, and, int и другие)
- Комментарии пишите только через //, так же можно и через /**/, но последний оформлять в построчном стиле. Главное, придерживаться одного выбранного формата в рамках конспекта. Ещё очень наглядно обозначать комментарии зелёным цветом: // например, вот так
- Подписывайте аргументы функциям и переменным в псевдокоде. Можно не обязательно всем, но чтобы не возникало динамической типизации:
- вместо void писать function или fun,
- типы аргументов и функций желательно указывать через двоеточие после имени
- function print(a: List<T>): // аналог void
- function get(index: int): int // функция, возвращающая int
- function fill(a: int[n]): // функция, принимающая массив длины
- Использовать словесное обозначение логических операций (and, or, xor, not вместо &&, ||, !)
- Вместо побитового xor-а ^ (крышечка) лучше писать (ниже о том, зачем это нужно)
- Можно переставлять логические операции для повышения читаемости: element not in set
- Проверку типов и приведение к типу (если вдруг понадобится) писать как is и as
- new _НЕ_ писать при создании экземпляра класса
- При нисходящем for писать downto
- Можно писать for по числам через две точки (for i = 1..10) или через to (for i = 1 to 10), но надо понимать, что последний элемент итерации включается, а внутри одного конспекта придерживаться одного стиля
- enum-поля класса или константы выделять курсивом в псевдокоде
- Это относится и к общеязыковым константам true, false и null
- У методов size(), length() можно не писать круглые скобки — трудно придумать случай, когда реализация функций отличается от просто поля в экземпляре класса чем-то существенным (это уже просто инкапсуляция языков программирования)
- len(queue), len(array) не писать — лишние скобки мешают читаемости
- надо заменять isEmpty на ==
- Разрешаемые случаи использования tex в псевдокоде:
- вместо null
- вместо !=
- вместо <= и >=
- и другие виды скобок, если возвращается в функции какой-то сложный объект (например объект )
- Теоретико-множественные операции:
- Возведение в степень в псевдокоде не писать через ^ (путается с xor), лучше использовать tex
- и , если вдруг вам надо