- •Методические указания
- •090303 «Информационная безопасность автоматизированных систем» очной формы обучения
- •Указания по технике безопасности при выполнении лабораторных работ
- •2 Курс Лабораторная работа № 1 Реализация строкового калькулятора
- •Теоретическая справка
- •Лабораторная работа № 2
- •Теоретическая справка
- •Лабораторная работа № 3 Анализ строки
- •Лабораторная работа № 4 Преобразование форматов представления данных
- •Теоретическая справка
- •Лабораторная работа № 5
- •Теоретическая справка
- •Лабораторная работа № 6 Наследование и полиморфизм
- •Теоретическая справка
- •Лабораторная работа № 7 Статические данные и функции классов
- •Теоретическая справка
- •Лабораторная работа № 8 Перегрузка операций
- •Теоретическая справка
- •3 Курс Лабораторная работа № 1 Реализация программы с использованием контейнерного класса stack stl
- •Теоретическая справка
- •Лабораторная работа № 2 Ассоциативные контейнеры stl
- •Теоретическая справка
- •Лабораторная работа № 3 Наследование и полиморфизм в языке c#
- •Лабораторная работа № 4 Коллекции в языке c#
- •Теоретическая справка
- •Лабораторная работа № 5 Перегрузка операций в языке c#
- •Теоретическая справка
- •Лабораторная работа № 6 Интерфейсы и их реализация в c#
- •Теоретическая справка
- •Лабораторная работа № 7 Делегаты и события в языке c#
- •Теоретическая справка
- •Лабораторная работа № 8 Использование шаблонов в языке c# 2.0
- •Теоретическая справка
- •Библиографический список
- •Содержание
- •2 Курс 2
- •3 Курс 15
- •Методические указания
- •090303 «Информационная безопасность автоматизированных систем» очной формы обучения
- •394026 Воронеж, Московский просп., 14
Теоретическая справка
В привычной записи знак операции записывается между аргументами, например, сумма чисел 2 и 3 записывается как 2 + 3. Польский математик Ян Лукашевич предложил две другие формы записи: префиксная форма, в которой знак операции записывается перед аргументами, и постфиксная форма, в которой знак операции записывается после аргументов. В префиксной форме сумма чисел 2 и 3 записывается как + 2 3, в постфиксной — как 2 3 +. В честь Яна Лукашевича эти формы записи называют прямой и обратной польской записью. В польской записи скобки не нужны. Например, выражение
(2+3)*(15-7)
записывается в прямой польской записи как
* + 2 3 - 15 7,
в обратной польской записи — как
2 3 + 15 7 - *.
Обратная польская запись формулы позволяет вычислять выражение любой сложности, используя стек как запоминающее устройство для хранения промежуточных результатов. В отличие от других калькуляторов, устройство стекового калькулятора вполне понятно и легко запоминается. Калькулятор имеет память в виде стека. При вводе числа оно просто добавляется в стек. Таким образом, при выполнении операции с двумя аргументами, например, сложения, в стеке должно быть не менее двух чисел. Аргументы удаляются из стека и на их место кладется результат, то есть при выполнении сложения глубина стека уменьшается на единицу. Вершина стека всегда содержит результат последней операции и высвечивается на дисплее калькулятора. Для вычисления выражения надо сначала преобразовать его в обратную польскую запись .
Программа извлекает из стека аргумент функции, вычисляет значение функции и помещает его обратно в стек. При желании список стандартных функций и возможных операций можно расширить.
Лабораторная работа № 2
Изучение работы с файлами в С++
Цель работы: закрепить знания базовых конструкций языка C++, изучить принципы работы с файлами, используя стандартные средства языка C++.
Задание: написать программу, выполняющую операции с матрицами произвольного размера (сложение и умножение), загружаемыми из файлов. Результат выполнения операций необходимо выводить в отдельный файл.
Инструкции к выполнению:
Для осуществления работы с файлами использовать стандартный файловый ввод-вывод C++ (класс fstream).
Разработать формат хранения матриц в файле, учитывающий произвольные размеры матриц. Использовать данный формат как для ввода, так и для вывода информации.
Теоретическая справка
Для того, чтобы в C++ работать с файлами, необходимо подключить заголовочный файл fstream:
#include <fstream>
После этого можно объявлять объекты, привязанные к файлам:
ifstream in; // Поток in будем использовать для чтения
ofstream out; // Поток out будем использовать для записи
Чтобы привязать тот или иной поток к файлу используется метод open, которому необходимо передать параметр – текстовую строку, содержащую имя открываемого файла.
in.open("input.txt");
out.open("output.txt");
После открытия файлов и привязки их к файловым потокам, работать с файлами можно так же, как со стандартными потоками ввода-вывода cin и cout. Например, чтобы вывести значение переменной x в поток out используются следующая операция
out<<x;
А чтобы считать значение переменной из потока in
in>>x;
Для закрытия ранее открытого файла используется метод close() без аргументов:
in.close();
out.close();
Для того, чтобы проверить состояние файла, необходимо вызвать метод eof(). Данный метод возвращает true, если достигнут конец файла или false, если не достигнут.
Организовать считывание файла построчно (считая, что строка заканчивается символом перехода на новую строку) так:
string S;
while ( getline(in,S))