Изменения

Перейти к: навигация, поиск

Участник:Shersh/Оформление

1888 байт добавлено, 21:18, 7 апреля 2016
Псевдокод
Основные правила написаны [[Обсуждение:Дискретная математика и алгоритмы | здесь]] и [[Участник: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 внешняя ссылка] {{TODO | t = Примеры красивых ссылок---}} ссылка в источниках информации,** примечания<ref>[http://www.antlr.org/ ANTLR {{---}} Parser generator]</ref> {{---}}ссылка на внешние ресурсы внутри текста конспекта;* Не не используйте заголовки первого уровня,* используйте акронимы для описания используемых фактов, {{Acronym | которые вы не доказываете| Но лучше объяснение этого факта поместить в текст сюда}},** но если вы ссылаетесь на какие-то статьи или ссылки, то надо использовать примечания (как это сделать, см. [[Построение FIRST и FOLLOW | тут]]);* добавляйте к терминам англоязычные названия,** '''Пример''' (англ. ''example'');* кстати, данный список является примером правильно оформленного маркированного списка в плане расстановки знаков препинаний и больших букв,* берите задачи в [[Шаблон:Задача]],* порядок разделов в конце конспекта: См. также (если есть), Примечания (если есть), Источники информации (если есть). 
== 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>)* Для для сдвигов (арифметических и нет) использовать \ll, \gg, \lll, \ggg texttt{<<} вместо << и >> ** : <tex> 1 \ll \texttt{<<}\ b </tex> (сравни <tex> 1 << b </tex>)* Хинтхинт: можно использовать \to вместо \rightarrow (и \gets вместо \from нет, к сожалению):leftarrow* Пары пары обозначать в \langle \rangle, а не в больше-меньше** : <tex> \langle T, S \rangle </tex> (сравни <tex> < T, S > </tex>)* Иногда в техе заменять многоточие на \dotsldots** : <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''', '''pushFront''', '''int''' и другие)# Комментарии пишите только через //, так же можно и через /*** /, но последний оформлять в построчном стиле. Главное, придерживаться одного выбранного формата в рамках конспекта. Ещё очень наглядно обозначать комментарии зелёным цветом: <font color=darkgreen> // например, вот так </font># Подписывайте аргументы функциям и переменным в псевдокоде. Можно не обязательно всем, но чтобы не возникало динамической типизации:#**** Вместо вместо '''void''' писать '''function''', '''func''' или '''fun''' ,#**** Типы типы аргументов и функций желательно указывать через двоеточие после имени#***** : '''funfunction''' print(a : '''listList<T>'''): <font color=greendarkgreen> // аналог '''void''' </font>#***** : '''intfunction''' get(index : '''int'''): '''int''' <font color=greendarkgreen> // функция, возвращающая '''int''' </font>#** : '''function''' fill(a: '''int[n]'''): <font color=darkgreen> // функция, принимающая массив длины <tex>n</tex> </font># Использовать словесное обозначение логических операций ('''and''', '''or''', '''xor''', '''not''' вместо &&, ||, !)**#* Вместо побитового '''xor'''-а ^ (крышечка) лучше писать <tex> \oplus </tex> (ниже о том, зачем это нужно)*** Вместо <tex> \in </tex> лучше писать '''in'''.**#* Можно переставлять логические операции для повышения читаемости: element '''not in''' set*** # Проверку типов и приведение к типу (если вдруг понадобится) писать как '''is''' и '''as'''** # '''new''' _НЕ_ писать при создании экземпляра класса** # При нисходящем '''for''' писать '''downto'''*** Итерируясь по объектам (рёбра, работы и другие) желательно использовать '''foreach''', чтобы было понятно {{---}} используется другой вид '''for''', хотя в языке программирования они вполне могут быть реализованы более-менее одинаково*** #: Можно писать '''for''' по числам через две точки ('''for''' i = 1..10) или через '''to''' ('''for''' i = 1 '''to''' 10), но надо понимать, что последний элемент итерации ''включается'', а внутри одного конспекта придерживаться одного стиля** # ''enum''-поля класса или константы выделять курсивом в псевдокоде*** #: Это относится и к общеязыковым константам ''true'', ''false'' и ''falsenull'' ** # У методов size(), length() можно не писать круглые скобки {{---}} трудно придумать случай, когда реализация функций отличается от просто поля в экземпляре класса чем-то существенным (это уже просто инкапсуляция языков программирования)**#* len(queue), len(array) не писать {{---}} лишние скобки мешают читаемости#*** TODO: надо ли заменять isEmpty на == <tex> == \varnothing </tex> ?* Комментарии можно писать как через #, так и через //, так же можно и через /**/, но последний оформлять в javadoc стиле. Главное, придерживаться одного выбранного формата в рамках конспекта. Ещё очень наглядно обозначать комментарии зелёным цветом: <font color=green> // например, вот так </font>* Разрешаемые случаи использования tex в псевдокоде:*#* <tex> \varnothing, \emptyset </tex> вместо null*#* <tex> \neq </tex> вместо !=*#* <tex> \leqslant \geqslant </tex> вместо <= и >=** TODO: сильно ли оправдано <tex>a \leftrightarrow b</tex> вместо swap(a, b)?*#* <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/>

Навигация