This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
courses:programming:rules [2017/02/21 14:06] tatyana.berlenko |
courses:programming:rules [2023/09/13 07:32] (current) sergey_tinyakov |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Правила для лабораторных работ ===== | + | ===== Правила оформления кода для лабораторных работ ===== |
- | ==== Код ==== | + | ==== Код должен содержать осмысленные, говорящие имена переменных и функций ==== |
- | * Код должен содержать осмысленные, говорящие имена переменных. | + | Пример функции, которая считает, сколько раз символ letter встретится в строке string: |
- | Пример: | + | |
<code> | <code> | ||
+ | int letterCounter(char *string, char letter) | ||
+ | { | ||
+ | int letterCount = 0; | ||
+ | for(int i = 0; string[i]; i++) | ||
+ | if(string[i] == letter) | ||
+ | letterCount++; | ||
+ | return letterCount; | ||
+ | } | ||
</code> | </code> | ||
- | * Исключение: имена переменных в цикле cо счётчиком. | + | ==== Исключение: имена переменных в цикле cо счётчиком ==== |
Пример использования цикла со счётчиком: | Пример использования цикла со счётчиком: | ||
<code> | <code> | ||
Line 18: | Line 26: | ||
</code> | </code> | ||
- | * Для считывания строк (в том числе с консоли) используйте функцию fgets. Запрещается использовать scanf и gets. | + | ==== Для считывания строк (в том числе с консоли) используйте функцию fgets. Запрещается использовать scanf и gets ==== |
- | Пример использования fgets для считывания с консоли: | + | Пример использования ''fgets'' для считывания с консоли: |
<code> | <code> | ||
int size = 100; | int size = 100; | ||
Line 27: | Line 35: | ||
</code> | </code> | ||
- | * Освобождайте выделенную динамическую память. | + | Помимо функции ''fgets'' можно посимвольно считывать строку через ''getchar'', однако вариант с ''fgets'' является более правильным. |
+ | |||
+ | __**Если есть гарантии по условию**__, что на вход будет подаваться какой-то **один конкретный тип данных __кроме строки__** (например, целочисленное число), | ||
+ | то тогда можно использовать функцию ''scnaf''. Например, следующий код считывает число между двумя вертикальными чертами (например, ''|15|''): | ||
+ | <code> | ||
+ | int x; | ||
+ | scanf("|%d|", &x); | ||
+ | </code> | ||
+ | |||
+ | ==== Освобождайте выделенную динамическую память ==== | ||
Пример выделения и освобождения памяти: | Пример выделения и освобождения памяти: | ||
Line 34: | Line 51: | ||
... | ... | ||
free(buffer); | free(buffer); | ||
- | </code> | ||
- | |||
- | ==== git & GitHub ==== | ||
- | |||
- | * Комменарий коммита должен быть осмысленным. | ||
- | |||
- | Пример добавления комментария к коммиту (Ubuntu): | ||
- | <code> | ||
- | git commit -m "Ivanov LR №1 done" | ||
- | </code> | ||
- | |||
- | * Каждая новая лабораторная/курсовая работа/контрольная работа должна находиться в своей ветке, которая обязательно должна быть создана в ветке master. | ||
- | |||
- | Пример перехода на ветку master и создания + перехода в новую ветку Ivanov_Ivan_lr1 (Ubuntu): | ||
- | <code> | ||
- | git checkout master && git pull origin master | ||
- | git checkout -b Ivanov_Ivan_lr1 | ||
- | </code> | ||
- | |||
- | * Каждая лабораторная работа должна находиться в своей папке. | ||
- | |||
- | Пример создания папки (Ubuntu): | ||
- | <code> | ||
- | mkdir Ivanov_Ivan_lr1 | ||
- | </code> | ||
- | |||
- | * Добавление файлов на Github должно происходить с помощью консоли. | ||
- | |||
- | Пример добавления файлов, создания коммита и отправки коммитов на GitHub (Ubuntu): | ||
- | <code> | ||
- | git add Ivanov_Ivan_lr1/main.c | ||
- | git commit -m "Ivanov LR №1 done" | ||
- | git push origin Ivanov_Ivan_lr1 | ||
</code> | </code> | ||