2012 : 9301
previous || next
administration П.А.Лукин @ CMD Collaboration




Занятие 1

Основы Linux и языков программирования C/C++.
Использование GCC и Make.


  • Файловая система Linux.
  • Оболочки bash и tcsh, автоматическая настройка переменных окружения, цепочки и последовательности команд, управление задачами (bg, fg, ps, jobs, kill).
  • Основные команды Linux (ls, rm, mkdir, rmdir, pwd, cd, cp, mv, du, df, cat, more, less, grep, sort, tail, head, w, who, man, passwd, chmod, file, diff,...), перенаправление стандартного ввода-вывода.
  • Интерактивная оболочка mc.
  • Основные текстовые редакторы (vi, pico/nano, jed, joe, mcedit).
  • Утилиты tar, gzip и bzip2.
  • Cетевые утилиты ssh, scp, ping, traceroute, finger.
  • Препроцессор С/С++ [ BOOK ]
  • Указатели на функции.
  • Классы в С++. Наследование. Полиморфизм.
  • Стандартный ввод-вывод в С++.
  • Области видимости. Обработка исключений. Шаблоны.
  • Коллекция компиляторов GCC.
  • Структура проекта. Использование утилиты make [ BOOK ]
  • Написание Makefile-а проекта [ manual ].

Задачи

  1. Настроить автоматическую установку переменных окружения PATH и LD_LIBRARY_PATH в конфигурационных файлах bash/tcsh.
  2. Выделить строку с Вашим login-ом в файле /etc/passwd и перенаправить ее в локальный файл одной командой.
  3. Запустить на фон выполнение задачи 'cat /dev/zero > /dev/null' (что она делает?), определить ее PID и jobid, определить среднюю загрузку процессора для Вашей задачи, остановить ее выполнение двумя способами.
  4. Запаковать любую директорию последовательностью 'tar; gzip' c максимальным коэффициентом сжатия (одной командой двумя способами), переименовать исходную директорию, распаковать архив (одной командой двумя способами) и проверить идентичность распакованных и исходных файлов используя diff (одной командой).
  5. Написать простой С++ проект со следующей иерархией классов: базовый класс - абстрактная элементарная частица с чисто виртуальным методом 'const std::string GetID() const throw()' с несколькими наследниками, перегружающими этот метод. Написать функцию, принимающую указатель на базовый класс и ссылку на std::ostream, выводящую идентификационную строку частицы с помощью метода GetID() в указанный стандартный поток вывода. Вынести описания классов в отдельные файлы, написать Makefile проекта, собрать и протестировать проект.

Задачи повышенной сложности

  1. Закачать с помощью wget исходный код пакета doxygen, установить его в домашней директории .
    Реализовать класс "комплексное число" с перегруженными операциями +-*/=, !<>== и обработкой исключений, снабдить класс коментариями в формате doxygen. Создать тестовое приложение, написать для него Doxyfile. Сгенерить документацию в формате HTML для всего проекта.

Полезные ресурсы


webmaster BINP NOVOSIBIRSK NSU PHYSICAL FACILITY HEP DEPARTMENT