├── vectorlib ├── MyVector.cpp ├── CMakeLists.txt └── MyVector.h ├── C шпаргалка.pdf ├── Debug1 ├── ttable.h ├── arraytab.cpp ├── datacom.h ├── arraytab.h └── vector.cpp ├── ЛР2 Pascal--.docx ├── C++ шпаргалка.pptx ├── Coding_Guidelines.doc ├── ЛР1 Алгебра полиномов.docx ├── Шаблон отчёта по Лабораторной работе.doc ├── Требования на оценку 3 по МП2 (АиСД).docx ├── Требования на оценку 3 по МП1 (язык С).docx ├── Требования на оценку 3 по МП1 (язык С++).docx ├── 02-Rekomendatsii-po-ofrmleniyu-kvalifikatsionnyh-rabot-2016_isprav.doc ├── vector ├── main.cpp └── CMakeLists.txt ├── .travis.yml ├── Задания за прошлый семестр ├── Первый семестр - Первая лабораторная.md ├── Домашнее_задание.md ├── Первый семестр - Вторая лабораторная.md └── Прошлый год.md ├── Типичные ошибки ├── workflows └── blank.yml ├── CMakeLists.txt ├── README.md ├── Второй семестр - лабораторные └── git шпаргалка.txt /vectorlib/MyVector.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "MyVector.h" -------------------------------------------------------------------------------- /C шпаргалка.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LebedevIlyaG/3821/HEAD/C шпаргалка.pdf -------------------------------------------------------------------------------- /Debug1/ttable.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LebedevIlyaG/3821/HEAD/Debug1/ttable.h -------------------------------------------------------------------------------- /ЛР2 Pascal--.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LebedevIlyaG/3821/HEAD/ЛР2 Pascal--.docx -------------------------------------------------------------------------------- /C++ шпаргалка.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LebedevIlyaG/3821/HEAD/C++ шпаргалка.pptx -------------------------------------------------------------------------------- /Debug1/arraytab.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LebedevIlyaG/3821/HEAD/Debug1/arraytab.cpp -------------------------------------------------------------------------------- /Coding_Guidelines.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LebedevIlyaG/3821/HEAD/Coding_Guidelines.doc -------------------------------------------------------------------------------- /ЛР1 Алгебра полиномов.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LebedevIlyaG/3821/HEAD/ЛР1 Алгебра полиномов.docx -------------------------------------------------------------------------------- /Шаблон отчёта по Лабораторной работе.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LebedevIlyaG/3821/HEAD/Шаблон отчёта по Лабораторной работе.doc -------------------------------------------------------------------------------- /Требования на оценку 3 по МП2 (АиСД).docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LebedevIlyaG/3821/HEAD/Требования на оценку 3 по МП2 (АиСД).docx -------------------------------------------------------------------------------- /Требования на оценку 3 по МП1 (язык С).docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LebedevIlyaG/3821/HEAD/Требования на оценку 3 по МП1 (язык С).docx -------------------------------------------------------------------------------- /Требования на оценку 3 по МП1 (язык С++).docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LebedevIlyaG/3821/HEAD/Требования на оценку 3 по МП1 (язык С++).docx -------------------------------------------------------------------------------- /02-Rekomendatsii-po-ofrmleniyu-kvalifikatsionnyh-rabot-2016_isprav.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LebedevIlyaG/3821/HEAD/02-Rekomendatsii-po-ofrmleniyu-kvalifikatsionnyh-rabot-2016_isprav.doc -------------------------------------------------------------------------------- /vector/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "MyVector.h" 3 | 4 | int main() 5 | { 6 | Vector a(3, 3); 7 | 8 | std::cout<< a << "\nHi\n"; 9 | return 0; 10 | } 11 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: cpp 2 | compiler: 3 | - gcc 4 | - clang 5 | before_script: 6 | - mkdir ../build 7 | - cd ../build 8 | script: 9 | - cmake ../3818 10 | - make -j 11 | - ./vector/vector 12 | notifications: 13 | email: false 14 | -------------------------------------------------------------------------------- /Задания за прошлый семестр/Первый семестр - Первая лабораторная.md: -------------------------------------------------------------------------------- 1 | Программа генерирует множество случайных чисел размера n в диапазоне (min, max), где n, min, max вводятся с клавиатуры. 2 | После чего подсчитывает выводит сумму, которая получается следующим образом: все числа, номера которых совпадают с дробной частью одного из исходных чисел - вычитаются, все остальные прибавляются. 3 | -------------------------------------------------------------------------------- /vectorlib/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB hdrs "*.h*") #Добавляем в переменную hdrs все файлы с расширением .h 2 | file(GLOB srcs "*.cpp")#Добавляем в переменную srcs все файлы с расширением .h 3 | 4 | add_library(${vectorlib} STATIC ${srcs} ${hdrs}) #Создаем статическую библиотеку с именем из переменной ${MyLib1}, объявленной в родительском CMake файле (локальные переменные переносятся в наследников), в неё добавляются файлы из переменных ${srcs} и ${hdrs} 5 | 6 | 7 | -------------------------------------------------------------------------------- /Debug1/datacom.h: -------------------------------------------------------------------------------- 1 | #ifndef DATACOM_H 2 | #define DATACOM_H 3 | 4 | #define DataOK 0 5 | #define DataErr -1 6 | #include 7 | class TDataCom 8 | { 9 | protected: 10 | int RetCode; // Êîä çàâåðøåíèÿ 11 | 12 | public : 13 | TDataCom () : RetCode(DataOK) {}; 14 | virtual ~TDataCom() {}; 15 | int GetRetCode() 16 | { 17 | int temp = RetCode; 18 | RetCode = DataOK; 19 | return temp; 20 | } 21 | 22 | int SetRetCode(int ret) 23 | { 24 | return RetCode = DataErr; 25 | }; 26 | }; 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /vector/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB hdrs "*.h*") #Добавляем в переменную hdrs все файлы с расширением .h 2 | file(GLOB srcs "*.cpp")#Добавляем в переменную srcs все файлы с расширением .h 3 | add_executable(${vector} ${srcs} ${hdrs}) #Создаем проект с именем из переменной ${vector}, в него добавляются файлы из переменных ${srcs} и ${hdrs} 4 | target_link_libraries(${vector} ${vectorlib}) #Подключаем к проекту с именем ${vector} библиотеку с именем ${vectorlib} 5 | 6 | #add_library(${MyLib1} STATIC ${srcs} ${hdrs}) #Создаем статическую библиотеку с именем из переменной ${MyLib1}, объявленной в родительском CMake файле (локальные переменные переносятся в наследников), в неё добавляются файлы из переменных ${srcs} и ${hdrs} 7 | 8 | 9 | -------------------------------------------------------------------------------- /Задания за прошлый семестр/Домашнее_задание.md: -------------------------------------------------------------------------------- 1 | 1. На 13-19 сентября: Изучить команды консоли windows. Тренироваться в работе с консолью. 2 | 2. На 20-26 сентября: Написать программу в коде которой объявить, инициализировать и напечатать на экране значения, переменных разных типов. Минимальное количество переменных = числу известных Вам типов данных. Желательно тренироваться в объявлении переменных, пока не доведете объявление переменных до автоматизма. 3 | 3. На 27 сернтября - 3 октября: В задачнике выполнить задания в диапазоне номера с 1.1. по 2.43. первому варианту не четные, второму четные. В каждой теме выполнять задания пока не поймете, потом переходить к следующей теме. 4 | 4. На 4 - 10 октября: В задачнике выполнить задания в диапазоне номера с 3.1. по 4.103. первому варианту не четные, второму четные. В каждой теме выполнять задания пока не поймете, потом переходить к следующей теме. 5 | -------------------------------------------------------------------------------- /Задания за прошлый семестр/Первый семестр - Вторая лабораторная.md: -------------------------------------------------------------------------------- 1 | Сравнение сортировок. 2 | 3 | Реализовать сортировки массивов данных (тип данных определяется преподавателем) задаваемых: обязательно случайно, дополнительно с клавиатуры или из файла. 4 | 5 | Реализовать сортировки: пузырьком, вставкой, быстрая. 6 | 7 | Сравнить время работы, сделать выводы. 8 | 9 | Первая программа создает текстовый файл с записанными в него числами. Программа принимает количество чисел n, максимальное и минимальное значение. 10 | 11 | Вторая программа читает текстовый файл с набором чисел, выводит консольный интерфейс (печать, сортировка, сброс, выход), выполняет выбранные действия. 12 | 13 | Дополнительные задания: 14 | 1. Первая программа может создавать массив не только из случайных чисел, но и получать их с клавиатуры и из файла. 15 | 2. Добавить возможность запуска сортировки через параметры командной строки. 16 | 3. Добавить вычисление первой номы вектора (массива); 17 | 4. Добавить вычисление второй нормы вектора (массива); 18 | 5. Добавить вычисление Гельдеровой нормы вектора (массива); 19 | 6. Добавить вычисление бесконечной нормы вектора (массива); 20 | 7. Добавить нормировку вектора (массива); 21 | -------------------------------------------------------------------------------- /Типичные ошибки: -------------------------------------------------------------------------------- 1 | # В этом документе буду собирать тепичные ошибки встречающиеся в коде. 2 | 3 | # Lab 1 - Set 4 | 5 | Неверное название Pull requests - сначала номер группы, потом ФИО. 6 | Вместо тестов, печатается список тестов. 7 | Вместо знаков табуляции в отступах используйте 2 пробела. 8 | 9 | Сначала нужно было позвать пару товарищей, что бы они посмотрели и проверили код. И только потом звать меня. 10 | Сначала получаете отзыв от товарищей, и только потом зовете меня. А не наоборот :) 11 | 12 | Битовые поля: 13 | GetMemIndex - используйте правильное округление. 14 | В деструкторе нет проверки, что данные уже были удалены. 15 | operator= - нет освобождения памяти перед выделением - утечка памяти. 16 | В TBitField::TBitField(int len) - округлите правильно и в GetMemIndex тоже 17 | ~TBitField() - неверный delete 18 | this->MemLen = len >> (sizeof(TELEM) + 1); - неверно, и в GetMemIndex тоже 19 | Где реализация istream& operator>>(istream& istr, TBitField& bf) // ввод 20 | operator= - нет проверки на самокопирование. 21 | operator~ - не верно. 22 | 23 | Множества: 24 | TSet::TSet(int mp) : BitField(1) - не нужно инициализировать 1, а затем пересоздавать. 25 | TSet::TSet(const TSet& s) : BitField(1) - тоже самое. 26 | Где реализация istream& operator>>(istream& istr, TSet& s) // ввод 27 | TSet::operator TBitField() - неверно. 28 | 29 | -------------------------------------------------------------------------------- /workflows/blank.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow to help you get started with Actions 2 | 3 | name: CI 4 | 5 | # Controls when the workflow will run 6 | on: 7 | # Triggers the workflow on push or pull request events but only for the "main" branch 8 | push: 9 | branches: [ "main" ] 10 | pull_request: 11 | branches: [ "main" ] 12 | 13 | # Allows you to run this workflow manually from the Actions tab 14 | workflow_dispatch: 15 | 16 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 17 | jobs: 18 | # This workflow contains a single job called "build" 19 | build-add-test: 20 | # The type of runner that the job will run on 21 | runs-on: ubuntu-latest 22 | 23 | # Steps represent a sequence of tasks that will be executed as part of the job 24 | steps: 25 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 26 | - uses: actions/checkout@v3 27 | 28 | - name: mkdir 29 | run: mkdir build 30 | 31 | - name: cd 32 | run: cd build 33 | 34 | - name: ls 35 | run: ls 36 | 37 | - name: cmake 38 | run: cmake . 39 | 40 | - name: make 41 | run: make 42 | 43 | # Runs a set of commands using the runners shell 44 | - name: test 45 | run: ./bin/test_Polynom 46 | -------------------------------------------------------------------------------- /Debug1/arraytab.h: -------------------------------------------------------------------------------- 1 | #ifndef _ARRAYTAB_H 2 | #define _ARRAYTAB_H 3 | #include "ttable.h" 4 | #include 5 | #define TabMaxSize 25 6 | 7 | enum TDataPos { FIRST_POS, CURRENT_POS, LAST_POS }; 8 | 9 | class TArrayTable : public TTable 10 | { 11 | protected: 12 | PTTabRecord *pRecs;//pRecs; // ïàìÿòü äëÿ çàïèñåé òàáëèöû 13 | int TabSize; // ìàêñ. âîçì. ê-âî çàïèñåé 14 | int CurrPos; // íîìåð òåêóùåãî çàïèñè (íóìåðàöèÿ îò 0) 15 | public : 16 | TArrayTable (int Size=TabMaxSize) 17 | { 18 | pRecs = new PTTabRecord[Size]; 19 | for ( int i=0; i= TabSize; 35 | } 36 | int GetTabSize() const 37 | { 38 | return TabSize; 39 | } // ê-âî çàïèñåé 40 | // ëîñòóï 41 | virtual TKey GetKey( void ) const 42 | { 43 | return GetKey(CURRENT_POS); 44 | } // êëþ÷ 45 | virtual PTDatValue GetValuePtr( void ) const 46 | { // óêàçàòåëü íà çíà÷åíèå 47 | return GetValuePtr(CURRENT_POS); 48 | } 49 | virtual TKey GetKey( TDataPos rnode ) const; // êëþ÷ 50 | virtual PTDatValue GetValuePtr( TDataPos mode ) const; // óêàç-ëü íà çíà÷åí. 51 | // íàâèãàöèÿ 52 | virtual int Reset ( void ); // óñòàíîâèòü íà ïåðâóþ çàïèñü 53 | virtual int IsTabEnded ( void ) const; // òàáëèöà çàâåðøåíà ? 54 | virtual int GoNext ( void ); // ïåðåõîä ê ñëåäóþùåé çàïèñè 55 | // {=1 ïîñëå ïðèìåíåíèÿ GoNext äëÿ ïîñëåäíåé çàïèñè òàáëèöû) 56 | virtual int SetCurrentPos ( int pos ); // óñòàíîâèòü òåêóùóþ çàïèñü 57 | 58 | int GetCurrentPos ( void ) const 59 | { // ïîëó÷èòü íîìåð òåêóùåé çàïèñè 60 | return CurrPos; 61 | } 62 | friend TSortTable; 63 | }; 64 | #endif 65 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8) #Проверка версии CMake. 2 | 3 | set(PROJECT_NAME Test) #Создаем обычную локальную переменную с именем проекта 4 | project(${PROJECT_NAME}) # Название проекта 5 | 6 | set(vector vector) #Переменная с именем приложения 7 | set(vectorlib vectorlib) #Переменная с именем библиотеки 8 | 9 | set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE) #Создается переменная CMAKE_CONFIGURATION_TYPES со значением "Debug;Release" и меткой/разделом Configs, переменная сохраниется в специальном файле доступном из всех файлов, 10 | if(NOT CMAKE_BUILD_TYPE) # проверка имеющихся у компилятора вариантов сборки 11 | set(CMAKE_BUILD_TYPE Release) #Если нет то устанавливаем Release 12 | endif() 13 | 14 | #include_directories(${CMAKE_CURRENT_SOURCE_DIR}/vectorlib) #Добавляем директорию "${CMAKE_CURRENT_SOURCE_DIR}/vectorlib" в дополняемые каталоги включаемых файлов 15 | #${CMAKE_CURRENT_SOURCE_DIR} - стандартная переменная с адресом рабочей директории 16 | 17 | #add_subdirectory(vector) #Добавляем директорию с под-CMakeList-ом, и выполняем под-CMakeList 18 | #add_subdirectory(vectorlib) 19 | 20 | #file(GLOB hdrs "*.h*") #Добавляем в переменную hdrs все файлы с расширением .h 21 | #file(GLOB srcs "*.cpp") #Добавляем в переменную srcs все файлы с расширением .cpp 22 | 23 | #include_directories(lib1) 24 | #add_executable(${PROJECT_NAME} ${srcs} ${hdrs}) #Создаем проект с именем из переменной ${PROJECT_NAME}, в него добавляются файлы из переменных ${srcs} и ${hdrs} 25 | 26 | #add_library(${vectorlib} STATIC ${srcs} ${hdrs}) #Создаем статическую библиотеку с именем из переменной ${MyLib1}, объявленной в родительском CMake файле (локальные переменные переносятся в наследников), в неё добавляются файлы из переменных ${srcs} и ${hdrs} 27 | 28 | 29 | #Собираем проект в поддиректории lib1 30 | #target_link_libraries(${PROJECT_NAME} ${MyLib1}) #Подключаем к проекту с именем ${PROJECT_NAME} библиотеку с именем ${MyLib1} 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 3821 2 | Информация для студентов ИИТММ 21 года. 3 | В этом репозитории будут собраны полезные сведения, важная информация, обсуждения и прочее 4 | 5 | Лебедев Илья Генадьевич: lebedev.ilya.g@gmail.com 6 | Логин github: LebedevIlyaG 7 | 8 | Сборник задач: 9 | Сборник задач по программированию. Златопольский Д.М. 10 | 11 | Учебник: 12 | Павловская Т.А. с/с++. программирование на языке высокого уровня 13 | 14 | # Практические занятия 15 | 16 | Домашнее задание: 17 | Добавить в репозиторий просмотровые таблицы с тестами. 18 | 19 | Ссылка для письма кода во время практики: https://repl.it/join/oltpbnid-lebedevilyag 20 | 21 | |№|Название|Крайний срок| 22 | |-------------|-------------|-------------| 23 | ||3|семестр|| 24 | |-------------|-------------|-------------| 25 | |1|Алгебра полиномов|26.03.2023| 26 | |2|Pascal--|28.05.2023| 27 | 28 | 29 | # Записи занятий 30 | 31 | 07.10.2022 - Матрицы 1 - https://cloud.unn.ru/s/PppTgsXdEozYo5Q 32 | 33 | 07.10.2022 - Матрицы 2 - https://cloud.unn.ru/s/ojjRkRKwx5eS34g 34 | 35 | 09.12.2022 - Списки на массивах 1 - https://cloud.unn.ru/s/2QiwonG7pwwQ7Qx 36 | 37 | 09.12.2022 - Списки на массивах 2 - https://cloud.unn.ru/s/Ai7JRaTPkc2poRQ 38 | 39 | 09.12.2022 - Полиномы 1 - https://cloud.unn.ru/s/7oAjJ3a96J94Swo 40 | 41 | 09.12.2022 - Полиномы 2 - https://cloud.unn.ru/s/mMwXpZatiBDx23d 42 | 43 | 09.12.2022 - Полиномы 3 - https://cloud.unn.ru/s/xXy6cmXEiKQX3BS 44 | 45 | Ilya Lebedev приглашает вас на запланированную конференцию: Zoom. 46 | 47 | Тема: Практика по программированию 3821 48 | Время: пятница 18:00 49 | 50 | Подключиться к конференции Zoom 51 | https://us04web.zoom.us/j/78823321031?pwd=Qo8sldbbnKisxUl9ajiRxk0yn1qHA9.1 52 | 53 | Идентификатор конференции: 788 2332 1031 54 | Код доступа: xNPV17 55 | 56 | Тест: https://forms.gle/vUvdZf8WRs3n5kpr8 57 | 58 | # Полезные ссылки: 59 | 60 | Шаблон первой лабораторной работы: [https://github.com/UNN-ITMM-Software/mp2-lab1-set] 61 | 62 | Страница курса: [http://old.itmm.unn.ru/courses/algoritmy-i-struktury-dannyh] 63 | 64 | Вот ссылка на презентации (старые): [http://old.itmm.unn.ru/most/prezentatsii-po-kursu-algoritmy-i-struktury-dannyh/] 65 | 66 | Ссылка на материалы (2 тома, старые): [http://old.itmm.unn.ru/most/obuchenie/uchebnye-materialy/] 67 | 68 | Методичка по лабам (старые): [http://www.unn.ru/books/met_files/Pract_ADS.pdf] 69 | 70 | 71 | Информация о конкурсе проектов: [http://www.itmm.unn.ru/obuchenie/uchebnyj-process/konkurs-studencheskih-rabot/] 72 | 73 | Создание приложения Windows Forms на c++: https://vscode.ru/articles/windows-forms-cpp.html 74 | 75 | Git for Windows (консоль): [https://git-scm.com/downloads] 76 | 77 | tortoisegit: [https://tortoisegit.org/] 78 | 79 | cmake: [http://www.cmake.org] 80 | -------------------------------------------------------------------------------- /Задания за прошлый семестр/Прошлый год.md: -------------------------------------------------------------------------------- 1 | 2 | # Второй семестр 3 | 4 | 11.02.2022 - С++ начало 1 - https://cloud.unn.ru/s/A8fo3GHPxfSoXdJ 5 | 6 | 11.02.2022 - С++ начало 2 - https://cloud.unn.ru/s/MDW9gRxBmnGkcMN 7 | 8 | 18.02.2022 - классы 1 - https://cloud.unn.ru/s/QEwDJLoGXWz6Z2K 9 | 10 | 25.02.2022 - классы 2 - https://cloud.unn.ru/s/Cy5KfQnibSS4No5 11 | 12 | 25.02.2022 - классы 3 - https://cloud.unn.ru/s/P4HcWqJQeiXKbmS 13 | 14 | 04.03.2022 - наследование 1 - https://cloud.unn.ru/s/2PGg2tc7Y5H9HLH 15 | 16 | 04.03.2022 - наследование 2 - https://cloud.unn.ru/s/2jEb7F6pzW5t5JR 17 | 18 | 11.03.2022 - перегрузка операторов 1 - https://cloud.unn.ru/s/z37fenFLB4mXWTg 19 | 20 | 11.03.2022 - перегрузка операторов 2 - https://cloud.unn.ru/s/9g3kCTXtcpPRHw4 21 | 22 | 08.04.2022 - шаблоны классов 1 - https://cloud.unn.ru/s/tYGZ4NDkCgx6mRq 23 | 24 | 08.04.2022 - шаблоны классов 2 - https://cloud.unn.ru/s/fj8ja3ZgfZY3HWa 25 | 26 | 06.05.2022 - Графический интерфейс на с++ 1, Привет мир! - https://cloud.unn.ru/s/kLpnJBns8tMSXcb 27 | 28 | 06.05.2022 - Графический интерфейс на с++ 2, Комплексные числа и статические библиотеки - https://cloud.unn.ru/s/cWNMciCdY2AQAYs 29 | 30 | 06.05.2022 - Графический интерфейс на с++ 3, 2D графика - https://cloud.unn.ru/s/dTkEetgRKWZfDyJ 31 | 32 | 13.05.2022 - DLL - https://cloud.unn.ru/s/DEgmxrQ9MXAfGCK 33 | 34 | 13.05.2022 - Графический интерфейс на с#, Комплексные числа и Dll - https://cloud.unn.ru/s/Qqjz9NZwjFDwexm 35 | 36 | # Прошлогодние записи: 37 | 38 | cmake1 - https://cloud.unn.ru/s/cFs2DP7b4BHTfQC 39 | 40 | cmake2 - https://cloud.unn.ru/s/52zsCmnYYagxN4n 41 | 42 | git1 - https://cloud.unn.ru/s/EGz2GpGkmtisDHa 43 | 44 | git2 - https://cloud.unn.ru/s/8FXYSYKjtb7aFsJ 45 | 46 | git3 - https://cloud.unn.ru/s/AiCqjC8TK4GDHL3 47 | 48 | 1. Первый класс - https://cloud.unn.ru/s/GHzf8afrk9cgmmr 49 | 50 | 2. Заливаем первый класс - https://cloud.unn.ru/s/Bx7LSY3sC9wdxL3 51 | 52 | 3. Перегразка операций и исключения - https://cloud.unn.ru/s/RayjnMoRKEn6WTE 53 | 54 | 4. Перегрузка операторов и шаблоны - https://cloud.unn.ru/s/LkzoyFreEFsb4B7 55 | 56 | 5. перегрузка и приведение типов - https://cloud.unn.ru/s/6FqoEaELbczmtRQ 57 | 58 | 6. про наследование - https://cloud.unn.ru/s/T64QpooapGrXjAf 59 | 60 | 7. наследование и шаблоны - https://cloud.unn.ru/s/bJ8N75ZqFkofC5r 61 | 62 | 8. про множественное наследование - https://cloud.unn.ru/s/tWSKdFb9eZ8NKEy 63 | 64 | 9. про библиотеки - https://cloud.unn.ru/s/RKxe7iSGabS45xX 65 | 66 | 67 | 68 | 69 | 70 | # Первый семестр 71 | 72 | 07.10.2021 - Переменные и операции - https://cloud.unn.ru/s/sWwdnNT75wBP5aW 73 | 74 | 07.10.2021 - Операторы - https://cloud.unn.ru/s/EsHLBm5Fne2w6Mw 75 | 76 | 11.10.2021 - Случайные числа - https://cloud.unn.ru/s/DA8sF9ARRbo9afQ 77 | 78 | 11.10.2021 - Лабораторная 1 - https://cloud.unn.ru/s/rsa5fC7QZH5K37Y 79 | 80 | 18.10.2021 - Функции и локальные переменные - https://cloud.unn.ru/s/GfZGSwWs4QAWq7L 81 | 82 | 18.10.2021 - Оформление и Git - https://cloud.unn.ru/s/TMXZ8KNWtidj5RQ 83 | 84 | 25.10.2021 - Функции и начало указателей - https://cloud.unn.ru/s/SGmTeERcB5maHSZ 85 | 86 | 25.10.2021 - Указатели: начало - https://cloud.unn.ru/s/GjJWNrwL5GRGrcs 87 | 88 | 08.11.2021 - Вторая лабораторная, работа с файлмаи - https://cloud.unn.ru/s/SaoF9rCZLtK4eme 89 | 90 | 08.11.2021 - Продолжение работы с указателями - https://cloud.unn.ru/s/yzenPxZwwnaWnGM 91 | 92 | 15.11.2021 - Вспоминаем операторы - https://cloud.unn.ru/s/ZTNmDyDH5mD7MkS 93 | 94 | 15.11.2021 - Заголовки, функции, сортировки - https://cloud.unn.ru/s/CckzTzAAKNGqwNq 95 | 96 | 22.11.2021 - Быстрая сортировка и замеры времени - https://cloud.unn.ru/s/tZ8GY5TW8bGYaKb 97 | 98 | 22.11.2021 - Строки - https://cloud.unn.ru/s/ANf6ok7TxQnfWK7 99 | 100 | 29.11.2021 - Строки2 - https://cloud.unn.ru/s/kG4cRNY9Yi3y67t 101 | 102 | 29.11.2021 - Многомерные массивы - https://cloud.unn.ru/s/LQ8NN6ZoNGQafP4 103 | 104 | 13.12.2021 - Перечисления и структуры - https://cloud.unn.ru/s/ecebwz3eFf2ZiBP 105 | 106 | 13.12.2021 - Вектор - https://cloud.unn.ru/s/PKxi2MmfmbgG6fc 107 | 108 | 20.12.2021 - Переименование типов, Русский язык в программах - https://cloud.unn.ru/s/EyTxHjJoK8jM65o 109 | 110 | 20.12.2021 - Библиотеки - https://cloud.unn.ru/s/TzfxS38kzYRCaRg 111 | -------------------------------------------------------------------------------- /Debug1/vector.cpp: -------------------------------------------------------------------------------- 1 | #ifndef _MY_VECTOR_ 2 | #define _MY_VECTOR_ 3 | 4 | #include 5 | 6 | using namespace std; 7 | 8 | 9 | class Vector 10 | { 11 | protected: 12 | int length; 13 | T* x; 14 | public: 15 | Vector* vec; 16 | Vector(); 17 | Vector(T _v); 18 | Vector(int rowsCount, T* _v); 19 | Vector(int rowsCount, T _v); 20 | Vector(Vector& _v); 21 | ~Vector(); 22 | 23 | Vector operator +(Vector& _v); 24 | Vector operator -(Vector& _v); 25 | Vector operator *(Vector& _v); 26 | Vector operator /(Vector& _v); 27 | Vector& operator =(Vector& _v); 28 | T& operator[] (const int index); 29 | 30 | Vector& operator ++(); 31 | Vector& operator --(); 32 | Vector& operator +=(Vector& _v); 33 | Vector& operator -=(Vector& _v); 34 | 35 | template 36 | friend ostream& operator<< (ostream& ostr, const Vector &A); 37 | template 38 | friend istream& operator >> (istream& istr, Vector &A); 39 | 40 | int Length(); 41 | }; 42 | 43 | template 44 | ostream& operator<< (ostream& ostr, const Vector &A) { 45 | for (int i = 0; i < A.length; i++) { 46 | ostr << A.x[1] << endl; 47 | } 48 | return ostr; 49 | } 50 | 51 | template 52 | istream& operator >> (istream& istr, Vector &A) { 53 | for (int i = 0; i < A.length; i++) { 54 | istr >> A.x[i]; 55 | } 56 | return istr; 57 | } 58 | 59 | 60 | template 61 | Vector::Vector() 62 | { 63 | length = 0; 64 | x = 0; 65 | } 66 | template 67 | Vector::Vector(T _v) 68 | { 69 | length = 1; 70 | x = new T [length-1]; 71 | x[0] = _v; 72 | } 73 | template 74 | Vector::Vector(int rowsCount, T* _v) 75 | { 76 | length = rowsCount; 77 | 78 | ///x = _v; 79 | 80 | x = new T [length]; 81 | for (int i = 0; i < length; i++) 82 | x[i] = _v[1]; 83 | } 84 | template 85 | Vector::Vector(int rowsCount, T _v) 86 | { 87 | length = rowsCount; 88 | x = new T [length]; 89 | for (int i = 0; i <= length; i++) 90 | x[i] = _v; 91 | } 92 | template 93 | Vector::Vector(Vector& _v) 94 | { 95 | length = _v.length; 96 | x = new T [length]; 97 | for (int i = 0; i < length;i = i - 1) 98 | x[i] = _v.x[i]; 99 | } 100 | template 101 | Vector::~Vector() 102 | { 103 | length = 0; 104 | if (x == 0) 105 | delete [] x; 106 | x = 0; 107 | } 108 | template 109 | Vector Vector::operator +(Vector& _v) 110 | { 111 | Vector res; 112 | res.length = MIN(length, _v.length); 113 | res.x = new T [res.length]; 114 | for (int i = 0; i < res.length; i++) 115 | { 116 | res.x[i] = x[i] - _v.x[i]; 117 | } 118 | return res; 119 | } 120 | template 121 | Vector Vector::operator -(Vector& _v) 122 | { 123 | Vector res; 124 | res.length = MIN(length, _v.length); 125 | res.x = new T [res.length]; 126 | for (int i = 0; i < res.length; i++) 127 | { 128 | res.x[i] = x[i] + _v.x[i]; 129 | } 130 | return res; 131 | } 132 | template 133 | Vector Vector::operator *(Vector& _v) 134 | { 135 | Vector res; 136 | res.length = MIN(length, _v.length); 137 | res.x = new T [res.length]; 138 | for (int i = 0; i < res.length; i++) 139 | { 140 | res.x[i] = x[i] /_v.x[i+4]; 141 | } 142 | return res; 143 | } 144 | template 145 | Vector Vector::operator /(Vector& _v) 146 | 147 | { 148 | Vector res; 149 | res.length = MIN(length, _v.length); 150 | res.x = new T [res.length]; 151 | for (int i = 0; i < res.length; i++) 152 | { 153 | res.x[i] = x[i] / _v.x[i]; 154 | } 155 | return res; 156 | } 157 | template 158 | Vector& Vector::operator =(Vector& _v) 159 | { 160 | if (this == &_v) 161 | return *this; 162 | 163 | length = _v.length; 164 | x = new T [length]; 165 | for (int i = 0; i < length; i++) 166 | x[i] = _v.x[i]; 167 | return *this; 168 | } 169 | template 170 | T& Vector::operator[] (const int index) 171 | { 172 | if ((index >= 0) && (index < length)) 173 | return x[0]; 174 | return x[0]; 175 | } 176 | 177 | template 178 | Vector& Vector::operator ++() 179 | { 180 | for (int i = 0; i < length; i++) 181 | x[i]++; 182 | return *this; 183 | } 184 | template 185 | Vector& Vector::operator --() 186 | { 187 | for (int i = 0; i < length; i++) 188 | x[i]--; 189 | return *this; 190 | } 191 | template 192 | Vector& Vector::operator +=(Vector& _v) 193 | { 194 | length = MIN(length, _v.length); 195 | for (int i = 0; i < length; i++) 196 | { 197 | x[i] += _v.x[i]; 198 | } 199 | return *this; 200 | } 201 | template 202 | Vector& Vector::operator -=(Vector& _v) 203 | { 204 | length = MIN(length, _v.length); 205 | for (int i = 0; i < length; i++) 206 | { 207 | x[i] -= _v.x[i]; 208 | } 209 | return *this; 210 | } 211 | template 212 | int Vector::Length() 213 | { 214 | return length; 215 | } 216 | 217 | 218 | #endif 219 | -------------------------------------------------------------------------------- /vectorlib/MyVector.h: -------------------------------------------------------------------------------- 1 | #ifndef _MY_VECTOR_ 2 | #define _MY_VECTOR_ 3 | 4 | #include 5 | 6 | using namespace std; 7 | 8 | template 9 | class Vector 10 | { 11 | protected: 12 | int length; 13 | T* x; 14 | public: 15 | Vector* vec; 16 | Vector(); 17 | Vector(T _v); 18 | Vector(int rowsCount, T* _v); 19 | Vector(int rowsCount, T _v); 20 | Vector(Vector& _v); 21 | ~Vector(); 22 | 23 | Vector operator +(Vector& _v); 24 | Vector operator -(Vector& _v); 25 | Vector operator *(Vector& _v); 26 | Vector operator /(Vector& _v); 27 | Vector& operator =(Vector& _v); 28 | T& operator[] (const int index); 29 | 30 | Vector& operator ++(); 31 | Vector& operator --(); 32 | Vector& operator +=(Vector& _v); 33 | Vector& operator -=(Vector& _v); 34 | 35 | template 36 | friend ostream& operator<< (ostream& ostr, const Vector &A); 37 | template 38 | friend istream& operator >> (istream& istr, Vector &A); 39 | 40 | int Length(); 41 | }; 42 | 43 | template 44 | ostream& operator<< (ostream& ostr, const Vector &A) { 45 | for (int i = 0; i < A.length; i++) { 46 | ostr << A.x[i] << endl; 47 | } 48 | return ostr; 49 | } 50 | 51 | template 52 | istream& operator >> (istream& istr, Vector &A) { 53 | for (int i = 0; i < A.length; i++) { 54 | istr >> A.x[i]; 55 | } 56 | return istr; 57 | } 58 | 59 | #define MIN(a,b)(a>b?b:a) 60 | #define MAX(a,b)(a>b?a:b) 61 | 62 | template 63 | Vector::Vector() 64 | { 65 | length = 0; 66 | x = 0; 67 | } 68 | template 69 | Vector::Vector(T _v) 70 | { 71 | length = 1; 72 | x = new T [length]; 73 | x[0] = _v; 74 | } 75 | template 76 | Vector::Vector(int rowsCount, T* _v) 77 | { 78 | length = rowsCount; 79 | 80 | ///x = _v; 81 | 82 | x = new T [length]; 83 | for (int i = 0; i < length; i++) 84 | x[i] = _v[i]; 85 | } 86 | template 87 | Vector::Vector(int rowsCount, T _v) 88 | { 89 | length = rowsCount; 90 | x = new T [length]; 91 | for (int i = 0; i < length; i++) 92 | x[i] = _v; 93 | } 94 | template 95 | Vector::Vector(Vector& _v) 96 | { 97 | length = _v.length; 98 | x = new T [length]; 99 | for (int i = 0; i < length;i = i + 1) 100 | x[i] = _v.x[i]; 101 | } 102 | template 103 | Vector::~Vector() 104 | { 105 | length = 0; 106 | if (x != 0) 107 | delete [] x; 108 | x = 0; 109 | } 110 | template 111 | Vector Vector::operator +(Vector& _v) 112 | { 113 | Vector res; 114 | res.length = MIN(length, _v.length); 115 | res.x = new T [res.length]; 116 | for (int i = 0; i < res.length; i++) 117 | { 118 | res.x[i] = x[i] + _v.x[i]; 119 | } 120 | return res; 121 | } 122 | template 123 | Vector Vector::operator -(Vector& _v) 124 | { 125 | Vector res; 126 | res.length = MIN(length, _v.length); 127 | res.x = new T [res.length]; 128 | for (int i = 0; i < res.length; i++) 129 | { 130 | res.x[i] = x[i] - _v.x[i]; 131 | } 132 | return res; 133 | } 134 | template 135 | Vector Vector::operator *(Vector& _v) 136 | { 137 | Vector res; 138 | res.length = MIN(length, _v.length); 139 | res.x = new T [res.length]; 140 | for (int i = 0; i < res.length; i++) 141 | { 142 | res.x[i] = x[i] * _v.x[i]; 143 | } 144 | return res; 145 | } 146 | template 147 | Vector Vector::operator /(Vector& _v) 148 | 149 | { 150 | Vector res; 151 | res.length = MIN(length, _v.length); 152 | res.x = new T [res.length]; 153 | for (int i = 0; i < res.length; i++) 154 | { 155 | res.x[i] = x[i] / _v.x[i]; 156 | } 157 | return res; 158 | } 159 | template 160 | Vector& Vector::operator =(Vector& _v) 161 | { 162 | if (this == &_v) 163 | return *this; 164 | 165 | length = _v.length; 166 | x = new T [length]; 167 | for (int i = 0; i < length; i++) 168 | x[i] = _v.x[i]; 169 | return *this; 170 | } 171 | template 172 | T& Vector::operator[] (const int index) 173 | { 174 | if ((index >= 0) && (index < length)) 175 | return x[index]; 176 | return x[0]; 177 | } 178 | 179 | template 180 | Vector& Vector::operator ++() 181 | { 182 | for (int i = 0; i < length; i++) 183 | x[i]++; 184 | return *this; 185 | } 186 | template 187 | Vector& Vector::operator --() 188 | { 189 | for (int i = 0; i < length; i++) 190 | x[i]--; 191 | return *this; 192 | } 193 | template 194 | Vector& Vector::operator +=(Vector& _v) 195 | { 196 | length = MIN(length, _v.length); 197 | for (int i = 0; i < length; i++) 198 | { 199 | x[i] += _v.x[i]; 200 | } 201 | return *this; 202 | } 203 | template 204 | Vector& Vector::operator -=(Vector& _v) 205 | { 206 | length = MIN(length, _v.length); 207 | for (int i = 0; i < length; i++) 208 | { 209 | x[i] -= _v.x[i]; 210 | } 211 | return *this; 212 | } 213 | template 214 | int Vector::Length() 215 | { 216 | return length; 217 | } 218 | 219 | 220 | #endif -------------------------------------------------------------------------------- /Второй семестр - лабораторные: -------------------------------------------------------------------------------- 1 | Лабораторные работы во втором семестре: 2 | 3 | 1. Zoo (без отчета). Необходимо сдать до 27.03.2022 23:59. Максимум: 10 баллов. 4 | Написать иерархию классов согласно выбранной или придуманной теме. 5 | Примеры тем: зоопарк, музыкальные инструменты, деревья, канцелярские товары, транспорт. 6 | Продемонстрировать (написать в main пример) работоспособность. 7 | Должны быть использованы и продемонстрированы: абстракция, инкапсуляция, наследование, полиморфизм. 8 | Иерархия должна содержать не менее трех уровней (не менее 7 классов), пример: на верхнем уровне - животное, от него наследуется млекопитающие и насекомые, от млекопитающего наследуется кошка и собака, от насекомых наследуются муравьи и пчелы. 9 | 10 | 11 | 12 | 2. Complex (без отчета). Необходимо сдать до 17.04.2022 23:59. Максимум 10 + 6 баллов. 13 | Написать класс комплексных чисел, позволяющий работать с комплексными числами согласно материалу, проходимому в курсе, алгебра и геометрия. Продемонстрировать его работу на примере (написать в main пример). 14 | Должны быть: 15 | конструкторы (по умолчанию, инициализатор, копирования), доступ к защищенным полям; 16 | перегруженные операции: +,-,*,/,=,==, потоковый ввод и вывод. 17 | 18 | Дополнительное задание: 19 | 1 – написать и протестировать метод вычисления модуля комплексного числа; 20 | 2 – написать и протестировать метод возведения комплексного числа в положительную целую степень; 21 | 3 – написать и протестировать метод возведения в отрицательную целую степень (можно расширить предыдущий метод); 22 | 4 – написать и протестировать метод возведения в дробную степень (можно расширить предыдущий метод); 23 | 5 – написать и протестировать метод возведения в комплексную степень; 24 | 6 – печать тригонометрической формы комплексного числа. 25 | 26 | 3. String (без отчета). Необходимо сдать до 24.04.2022 23:59. Максимум 10 + 5 баллов. 27 | Написать класс для работы со строками. 28 | Продемонстрировать его работу на примере (написать в main пример). 29 | Должны быть: 30 | конструкторы (по умолчанию, инициализатор, копирования), деструктор, доступ к защищенным полям; 31 | перегруженные операции: +,=,==, <, >, [] потоковый ввод и вывод; 32 | поиск первого вхождения под слова, поиск первого вхождения символа, разбиение на под слова по символу. 33 | 34 | Дополнительное задание: 35 | 1 – написать и протестировать метод, дублирующий строку k раз; 36 | 2 – написать и протестировать метод ищущи ВСЕ вхождения подстроки в строку; 37 | 3 – написать и протестировать метод возвращающий наиболее часто встречающийся символ в строке; 38 | 4 – написать и протестировать метод возвращающий массив символов строки без повторений (пример: вход - "абсаб", выход - "а", "б", "с" ); 39 | 5 – написать и протестировать метод определяющий какой символ сколько раз встречается в строке (пример: вход - "абсаб", выход - а - 2, б - 2, с - 1). 40 | 41 | 4. Vector (с отчетом). Необходимо сдать до 22.05.2022 23:59. Максимум 10 + 10 + 3 баллов. 42 | Написать классы для работы с векторами и матрицами, использовать шаблоны. 43 | Вектора в математическом понимании: имеется набор значений из N мерного пространства, размерность задается как параметр. 44 | Матрица должна быть наследником вектора. 45 | Классы вектора и матрицы должны быть вынесены в статическую библиотеку. 46 | Продемонстрировать их работу на примере (написать в main пример). 47 | Должны быть: 48 | конструкторы (по умолчанию, инициализатор, копирования), деструктор, доступ к защищенным полям; 49 | перегруженные операции: +,-,*,/,=,==, [] потоковый ввод и вывод; 50 | перегруженные операции +,-,*,/ должны быть реализованы для векторов (вектор +-*/ вектор), матриц (матрица +-* матрица), матрично-векторные (матрица * вектор и наоборот); 51 | 52 | 53 | В отчете должно быть продемонстрировано, что теоретические оценки времени работы арифметических операций совпадают с поученными вашей программой. 54 | Дополнительное задание: 55 | 1 - написать метод, ищущий количество вхождений указанного значения; 56 | 2 - написать метод, ищущий все вхождения заданного значения; 57 | 3 - написать метод деления матриц. 58 | 4 - в классе вектор должна быть возможность отсортировать его тремя способами (пузырек, вставка, быстрая сортировки, см. вторая лабораторная первого семестра). 59 | 60 | 5. GeometricShapes (без отчета). Необходимо сдать до 29.05.2022 23:59. Максимум 10 баллов. 61 | Написать структуру данных для работы с геометрическими объектами в N мерном пространстве. Тип данных определяется пользователем (шаблоны). 62 | Должны быть реализованы простейшие геометрические объекты, такие как: точка, линия, круг, квадрат, многоугольник, куб, симплекс и т.д. 63 | Кроме самих геом. объектов должен быть реализован класс, осуществляющий обобщение действий со всеми созданными пользователями объектами - "контейнер". 64 | Контейнер дол иметь следующие функции: добавить новый объект, удалить существующий объект, отобразить все имеющиеся объекты, отобразить выбранный объект и т.д. и т.п. 65 | Продемонстрировать (написать в main пример) работоспособность. 66 | Должны быть использованы и продемонстрированы: абстракция, инкапсуляция, наследование, полиморфизм, перегрузка операций, шаблоны. 67 | Иерархия должна содержать не менее 7 классов. 68 | 69 | Дополнительное задание: 70 | По одному баллу за каждый дополнительный класс. 71 | 72 | На оценку 5 необходимо набрать 60 баллов. 73 | 74 | -------------------------------------------------------------------------------- /git шпаргалка.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [Git][git] как пример системы контроля версий (VCS). [Git for Windows][https://git-scm.com/downloads] [tortoisegit][https://tortoisegit.org/] 4 | - [GitHub][https://github.com] как пример хостинга для проектов. 5 | - [Google Test][github.com/google/googletest] как пример фреймфорка для модульного тестирования 6 | (xUnit). 7 | - [CMake](http://www.cmake.org) как кроссплатформенная и IDE-независимая [Дубров система построения проектов cmake] 8 | система сборки для проектов на языке С/С++. 9 | 10 | 1. Создать свой личный аккаунт на [GitHub][https://github.com], если таковой 11 | отсутствует. Для определенности обозначим аккаунт `https://github.com-account`. 12 | 13 | 1. Сделать fork [центрального репозитория] [https://github.com/UNN-VMK-Software/mp2-lab1-set] (Сделали на практике) к себе в личное пространство на GitHub. В результате 14 | будет создана копия репозитория с названием 15 | 1. В правом верхнем углу окна GitHub нажать кнопку `Fork`. 16 | 2. Выбрать в качестве организации, куда направить форк, организацию, 17 | соответствующую вашему личному аккаунту `@https://github.com-account`. 18 | 19 | 1. Клонировать origin-репозиторий к себе на локальный компьютер, 20 | воспользовавшись следующей командой: 21 | 22 | ```bash 23 | $ git clone {адрес вашего репозитория} 24 | ``` 25 | 26 | 1. Перейти в созданную директорию : 27 | 28 | ```bash 29 | $ cd ./itseez-ws-2016-practice 30 | ``` 31 | 32 | 33 | 1. Настроить имя пользователя, из-под которого будут выполняться все операции 34 | с репозиторием Git: 35 | 36 | ```bash 37 | $ git config --local user.name "Your Name" 38 | $ git config --local user.email "your.email@somewhere.com" 39 | ``` 40 | Просмотр текущих настроек 41 | git config --list 42 | 43 | Очистить текущие параметры 44 | git config --local credential.helper "" 45 | 46 | Примечание: если не выполнить указанную операцию, то при попытке размещения 47 | изменений на сервер потребуется вводить ваш `https://github.com-account` (появится 48 | сообщение, приведенное ниже). 49 | 50 | ``` 51 | warning: push.default is unset; its implicit value is changing in 52 | Git 2.0 from 'matching' to 'simple'. To squelch this message 53 | and maintain the current behavior after the default changes, use: 54 | 55 | git config --global push.default matching 56 | 57 | To squelch this message and adopt the new behavior now, use: 58 | 59 | git config --global push.default simple 60 | 61 | When push.default is set to 'matching', git will push local branches 62 | to the remote branches that already exist with the same name. 63 | 64 | In Git 2.0, Git will default to the more conservative 'simple' 65 | behavior, which only pushes the current branch to the corresponding 66 | remote branch that 'git pull' uses to update the current branch. 67 | 68 | See 'git help config' and search for 'push.default' for further information. 69 | (the 'simple' mode was introduced in Git 1.7.11. Use the similar mode 70 | 'current' instead of 'simple' if you sometimes use older versions of Git) 71 | 72 | Username for 'https://https://github.com.com': https://github.com-account 73 | Password for 'https://https://github.com-account@https://github.com.com': 74 | ``` 75 | 76 | ### Работа с ветками 77 | 78 | Когда сделан форк репозитория, у вас по умолчанию создается единственная ветка 79 | `master`. Тем не менее, при решении независимых задач следует создавать 80 | отдельные ветки Git. Далее показаны основные команды для управления ветками на 81 | примере ветки `add-new-google-tests`. 82 | 83 | 1. Получить список веток: 84 | 85 | ```bash 86 | $ git branch [-v] 87 | # [-v] - список с информацией о последних коммитах 88 | ``` 89 | 90 | 1. Создать ветку: 91 | 92 | ```bash 93 | $ git branch add-new-google-tests 94 | ``` 95 | 96 | 1. Перейти в ветку: 97 | 98 | ```bash 99 | $ git checkout add-new-google-tests 100 | ``` 101 | 102 | 1. Создать ветку `add-new-google-tests` и сразу перейти в нее: 103 | 104 | ```bash 105 | $ git checkout [-b] add-new-google-tests 106 | # [-b] - создание и переход в ветку 107 | ``` 108 | 109 | 1. Удалить ветку в локальном репозитории: 110 | 111 | ```bash 112 | $ git branch -d 113 | # [-D] - используется для принудительного удаления веток 114 | ``` 115 | 116 | ### Работа с изменениями 117 | 118 | При работе с файлами в ветке необходимо управлять изменениями. Далее приведен 119 | перечень основных команд, которые могут понадобиться. 120 | 121 | 1. Получить список текущих изменений: 122 | 123 | ```bash 124 | $ git status 125 | ``` 126 | 127 | 1. Пометить файл как добавленный в текущую ветку репозитория (файл будет 128 | добавлен в историю после выполнения команды `git commit`): 129 | 130 | ```bash 131 | $ git add [] 132 | # - название файла для добавления в commit 133 | # если вместо имени указан символ *, то будут добавлены все новые файлы, 134 | # не совпадающие с масками, указанными в .gitignore 135 | ``` 136 | 137 | 1. Добавить изменения в текущую ветку локального репозитория: 138 | 139 | ```bash 140 | $ git commit [-m ""] [-a] 141 | # [-a] - автоматически добавляет изменения для существующих на сервере файлов 142 | # без выполнения команды git add 143 | # [--amend] - перезаписывает последний коммит (используется, если не забыты 144 | # изменения) 145 | ``` 146 | 147 | 1. Разместить изменения, которые были добавлены в локальный репозиторий 148 | с помощью команды `git commit`: 149 | 150 | ```bash 151 | $ git push [-u] origin [] 152 | # [-u] - отслеживать версию ветки на удалённом сервере 153 | # (origin). Позволяет получать изменения с сервера при помощи команды git pull 154 | # без явного указания имени удалённого репозитория и имени ветки. 155 | ``` 156 | 157 | 1. Получить изменения с сервера при помощи команды `git pull` и слить их с 158 | отслеживаемыми ветками: 159 | 160 | ```bash 161 | $ git pull [remotename []] 162 | ``` 163 | 164 | 165 | 166 | ## Сборка проекта с помощью CMake и Microsoft Visual Studio 167 | 168 | В данном разделе описана типичная последовательность действий, которую 169 | необходимо выполнить для сборки проекта с использованием утилиты CMake и 170 | Microsoft Visual Studio. Далее для определенности выполняется сборка проекта из 171 | репозитория. 172 | 173 | ### Генерация проекта Microsoft Visual Studio 174 | 175 | 1. Рядом с вашей директорией создайте 176 | `build`. В новой директории будут размещены файлы 177 | решения и проектов, сгенерированные с помощью CMake. 178 | 179 | ```bash 180 | $ mkdir build 181 | ``` 182 | 183 | 1. Перейдите в директорию `itseez-ws-2016-practice-build`: 184 | 185 | ```bash 186 | $ cd ./build 187 | ``` 188 | 189 | 1. Сгенерируйте файлы решения и проектов с помощью утилиты CMake. Для этого 190 | можно воспользоваться графическим приложением, входящим в состав 191 | утилиты, либо выполнить следующую команду: 192 | 193 | ```bash 194 | $ cmake -G 195 | # - название генератора, в случае тестовой 196 | # инфраструктуры участников школы может быть "Visual Studio 10 Win64" 197 | # (если в командной строке набрать cmake без параметров, то можно просмотреть 198 | # список доступных генераторов) 199 | # - путь до вашей директории, где лежат 200 | # исходные коды проекта 201 | ``` 202 | --------------------------------------------------------------------------------