Последний прием долгов по предмету Технология Программирования в весенний семестр 2016 будет в субботу 18 июня с 10:00 до 12:00 в 7-405.
Thursday, 16 June 2016
Monday, 13 June 2016
Прием долгов по Технологии Программирования (15.06.16)
Прием долгов по предмету Технология Программирования будет в среду 15 июня с 18:00 до 20:00 в 7-405.
Saturday, 28 May 2016
Вопросы на экзамен 2016
- Жизненный цикл (ЖЦ) программного обеспечения (ПО). Итерационные модели ЖЦ. Каскадная модель ЖЦ;
- Стадии ЖЦ; V-образная, XP модель ЖЦ;
- Объектно-ориентированное программирование (ООП). Принципы ООП;
- ООП: Отношение между классами;
- С++: Классы – объявление, конструкторы, деструкторы, работа с памятью;
- Динамическое и статическое выделения памяти;
- С++: Наследование;
- С++: Перегрузка унарных и бинарных операторов;
- Асимптотическая сложность;
- Контейнеры С++: vector;
- Контейнеры С++: list;
- Контейнеры С++: deque;
- Контейнеры С++: set;
- Контейнеры С++: map;
- Контейнеры С++: stack;
- Контейнеры С++: queue;
- Отладка программ: классификация ошибок, основные приемы локализации ошибок;
- С++: исключения. Основные исключения STL;
- Абстрактные классы. C++: чистые виртуальные функции;
- С++: шаблоны функций и классов;
- Тестирование: классификации подходов к тестированию (типы тестирования);
- Паттерны программирования: Одиночка, Наблюдатель;
- Паттерны программирования: Декоратор, Фабричный метод;
- Паттерн (принцип) программирования: Получение ресурса – есть инициализация (RAII);
- Умные указатели: unique_ptr, auto_ptr;
- Умные указатели: shared_ptr;
- Умные указатели: weak_ptr.
Thursday, 26 May 2016
Расписание занятий и консультаций до экзамена
Расписание экзаменов по технологии программирования можно найти по ссылке. Напомню, что для получения допуска на экзамен необходимо сдать все лабораторные работы и курсовой проект. Это можно сделать в следующие дни:
28 мая:
- с 11:50 до 15:10 в 7-410;
4 июня:
- с 10:10 до 11:30 в 7-405;
- с 11:50 до 15:10 в 7-410;
11 июня:
- с 10:10 до 11:30 в 7-405;
- с 11:50 до 15:10 в 7-410.
28 мая:
- с 11:50 до 15:10 в 7-410;
4 июня:
- с 10:10 до 11:30 в 7-405;
- с 11:50 до 15:10 в 7-410;
11 июня:
- с 10:10 до 11:30 в 7-405;
- с 11:50 до 15:10 в 7-410.
Saturday, 21 May 2016
Saturday, 14 May 2016
Пример работы с xml объектами в C++
Установка
В данном разделе приведена инструкция по установке в Microsoft Visual Studio 2012, возможно, для других версий подтребуется дополнительные действия, но общая логика останется прежней.
- Скачать библиотеку pugixml. На странице проекта нужно нажать на кнопку "Download ZIP";
- Распаковать скаченный zip архив;
- В распакованном проекте открыть проект MVS в каталоге "pugixml-1.7\scripts". Открывать желательно проект той версии MVS, которая у вас установлена. В моем случаи MVS 2012 не было, поэтому был открыт "pugixml_vs2015.vcxproj".
- Открытый проект необходимо собрать и в результате будет надпись вида:1>------ Rebuild All started: Project: pugixml_vs2015, Configuration: Debug Win32 ------1>Project file contains ToolsVersion="14.0". This toolset is unknown or missing. You may be able to resolve this by installing the appropriate .NET Framework for this toolset. Treating the project as if it had ToolsVersion="4.0".1> pugixml.cpp1> pugixml_vs2015.vcxproj -> C:\Users\rdo\Downloads\pugixml-1.7\pugixml-1.7\scripts\vs2015\Win32_Debug\pugixml.lib========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
- При сборке может дополнительно потребоваться изменить настроки компилятора, например, для MVS 2012 необходимо изменить версию "Platform Toolset" (Project -> Properties -> General -> Platform Toolset) с "v140" на "Visual Studio 2012 (v110)";
- Создать новый проект в MVS, если он еще не был создан.
- Из распакованного архива в новый проект скопировать файлы "pugixml.hpp" и "pugiconfig.hpp" из каталога "pugixml-1.7\src";
- Открыть проект, в заголовочные файлы проекта добавить скопированные файлы.
- В настройках проекта изменить следующие настроки:
- Project -> Properties -> Linker -> General: В поле "Additional libraries directories" прописать путь до каталога, в котором лежит скопилированная библиотека pugixml.lib (см. п4.). Например: "C:\Users\rdo\Downloads\pugixml-1.7\pugixml-1.7\scripts\vs2015\Win32_Debug";
- Project -> Properties -> Linker -> Input: В поле "Additional dependencies" указать сборщику, что нужно в проекте использовать дополнительную библиотеку "pugixml.lib". В итоге в поле должно быть запись вида "pugixml.lib;%(AdditionalDependencies)";
- Библиотека добавлена.
- Project -> Properties -> Linker -> General: В поле "Additional libraries directories" прописать путь до каталога, в котором лежит скопилированная библиотека pugixml.lib (см. п4.). Например: "C:\Users\rdo\Downloads\pugixml-1.7\pugixml-1.7\scripts\vs2015\Win32_Debug";
- Project -> Properties -> Linker -> Input: В поле "Additional dependencies" указать сборщику, что нужно в проекте использовать дополнительную библиотеку "pugixml.lib". В итоге в поле должно быть запись вида "pugixml.lib;%(AdditionalDependencies)";
Примеры работы с библиотекой
Полный список примеров можно посмотреть на еще одном сайте проекта.
Считывание с файла/строки
#include <iostream>
#include <iostream>
#include "pugixml.hpp"
std::string XML_CONTENT = "<xml>"
"<element1>value1</element1>"
"<element2>value2</element2>"
"<element3>value3</element3>"
"<element4>"
"<element5 attr=\"attribute-value\">5</element5>"
"<element6/>"
"</element4>"
"</xml>";
int main() {
std::cout << "Example 1: loading from string/file" << std::endl;
pugi::xml_document doc;
pugi::xml_parse_result result
= doc.load_string(XML_CONTENT.c_str());
//pugi::xml_parse_result result = doc.load_file("filename.xml");
std::cout << "Load result:" << result.description() << std::endl;
return 0;
}
Load results:No error
-------
Вывод на консоль:
Example 1: loading from string/fileLoad results:No error
Получение значений
std::cout << "Example 2: getting elements value" << std::endl;
std::cout << "xml->element1: " << doc.child("xml")
.child("element1")
.text()
.as_string() << std::endl;
std::cout << "xml->element4->element5: " << doc.child("xml")
.child("element4")
.child("element5")
.text()
.as_int() << std::endl;
std::cout << "xml->element4->element6: " << doc.child("xml")
.child("element4")
.child("element6")
.text()
.as_bool() << std::endl;
std::cout << "xml->element4->element5(attribute): "
<< doc.child("xml")
.child("element4")
.child("element5")
.attribute("attr")
.as_string() << std::endl;
-------
Вывод на консоль:
Example 2: getting elements valuexml->element1: value1
xml->element4->element5: 5
xml->element4->element6: 0
xml->element4->element5(attribute): attribute-value
Итерирование
int Count(pugi::xml_node_iterator& begin, pugi::xml_node_iterator& end) {
int r = -1;
while (begin != end) {
++r;
++begin;
}
return r;
}
void IterateNode(pugi::xml_node& root, int offset = 0) {
for (pugi::xml_node node: root.children()) {
int i = offset;
while (i > 0) {
std::cout << " ";
--i;
}
if (Count(node.begin(), node.end()) > 0) {
std::cout << "Node: " << node.name() << " :" << std::endl;
IterateNode(node, offset + 2);
return;
}
std::cout << "Node: " << node.name() << "; value: " << node.text().as_string() << std::endl;
}
}
//main
std::cout << "Example 3: children iteration" << std::endl;
IterateNode(doc.child("xml"));
-------
Вывод на консоль:
Example 3: children iterationNode: element1; value: value1
Node: element2; value: value2
Node: element3; value: value3
Node: element4 :
Node: element5; value: 5
Node: element6; value:
Файл проекта
Файл проекта с примерами.
Изменение в варианте №9 курсовой работы
В варианте №9 использование библиотеки wxWidgets необязательно.
Subscribe to:
Posts (Atom)