- •Антонюк в.А., Задорожный с.С.
- •Первая программа на с. История языка программирования с.
- •Среда программирования «Microsoft Visual Studio.Net».
- •Структура программы.
- •Пример простейшей программы:
- •Представление данных.
- •Операции.
- •Ввод и вывод алфавитно-цифровой информации.
- •Математические функции.
- •Практическое задание №1.
- •Условия в вычислениях. Ветвящиеся и итерационные алгоритмы Условная операция присваивания. Операторы if ... Else и switch.
- •Ветвящиеся алгоритмы.
- •Циклические и рекурсивные алгоритмы. Операторы циклов for, do, while.
- •Практическое задание №2.
- •Функции.
- •Определение функции.
- •Прототипы функций.
- •Вызов по значению и вызов по ссылке.
- •Вычисление функций путем разложения в ряд.
- •Поиск корней функции методом деления отрезка пополам.
- •Поиск корней функции методом касательных.
- •Практическое задание №3.
- •Массивы и указатели. Работа с файлами. Объявления массивов и указателей.
- •Доступ к элементам массива.
- •Передача массивов функциям.
- •Указатели.
- •Динамическое выделение и освобождение памяти.
- •Практическое задание.
- •Потоковые функции.
- •Низкоуровневый ввод и вывод.
- •Ввод и вывод символов, строк, слов.
- •Форматированный ввод и вывод.
- •Потоки cin, cout, cerr.
- •Практическое задание №4.
- •Структуры и объединения. Синтаксис структур.
- •Доступ к элементам структуры.
- •Передача структур в функции.
- •Структуры и битовые поля.
- •Объединения.
- •Дополнительные средства (typedef и enum).
- •Введение в объектно-ориентированное программирование. Принципы объектно-ориентированного программирования.
- •Терминология объектно-ориентированного программирования.
- •Структура как простейший класс.
- •Inline методы.
- •Указатель this.
- •Конструкторы и деструкторы.
- •Перегрузка методов класса.
- •Перегрузка операций.
- •Практическое задание.
- •Производные классы. Полиморфизм
- •Виртуальные функции
- •Использование дружественных функций.
- •Практическое задание.
- •Работа в объектно-ориентированной среде.
- •Объектно-ориентированные стековые операции.
- •Объектно-ориентированные связанные списки.
- •Практическое задание.
- •Классы iostream.
- •Потоковый ввод-вывод.
- •Буферизованные потоки.
- •Строковые потоки.
- •Двоичные файлы.
- •Вычисления в интерактивном режиме.
- •Графика в системе matlab.
- •3. Программирование m-функций.
- •4. Создание законченных приложений на основе графического интерфейса пользователя.
- •4. Создание законченных приложений на основе графического интерфейса пользователя.
- •Глава 7. Дополнительные возможности системы matlab Объекты и классы. Переопределение операций.
- •Написание расширений matlab на языке c
- •Программные интерфейсы
- •Настройка среды для сборки проекта
- •Пример программы
- •Вызов команд среды matlab из mex-файла
Практическое задание.
Это задание посвящено изучению свойств структур данных переменного размера и потоков данных в языке C++. При выполнении практических задач студенты знакомятся с основными динамическими структурами данных: списками, динамическими и ассоциативными массивами, деревьями. Реализуя динамические структуры данных в своих программах, студенты должны предусмотреть возможность сохранения объектов на диске и восстановления их из файла. Эти функции должны быть реализованы на основе потоков языка C++.
Необходимым условием при реализации функций сохранения и восстановления данных является их совместимость по форматам данных (т.е. чтобы объект, спасенный одной программой мог быть прочитан и восстановлен другой без коррекции файла данных).
Вариант A.
Очередью называется связный список объектов с доступом в двух точках — голове и хвосте очереди. Объект добавляется в хвост очереди, а извлекается из ее головы. Таким образом первый элемент, помещенный в очередь, будет извлечен первым.
Разработайте класс "Динамически изменяемая очередь" и напишите программу, рисующую червяка, случайным образом ползающего по экрану. Каждая точка тела червяка повторяет траекторию головы. Предусмотрите возможности сохранения очереди на диске и восстановления его из файла.
Вариант B.
Деревом называется структура данных, основанная на порядке типа "Отец‑Сыновья". Дерево состоит из узлов. Каждый узел (кроме одного) имеет единственного родителя и одного или нескольких сыновей. Родители и сыновья, в свою очередь, также являются узлами и т.д. Дерево имеет также единственный узел, не имеющий родителя, но имеющий сыновей. Таким образом, все остальные узлы дерева являются прямыми или косвенными сыновьями этого узла. Такой узел называется корнем дерева. Узлы, имеющие и родителей и сыновей, часто называют ветвями дерева, а узлы, имеющие только родителей, но не имеющие сыновей называют листьями. По максимальному количеству сыновей у одного узла различают бинарные — 2 сына, тринарные — 3 сына, тетрарные — 4 сына и т.д. деревья.
Разработайте класс "Тринарное дерево" и напишите на его основе программу, строящую плоский фрактал по следующему рекуррентному алгоритму:
Предусмотрите операции спасения дерева на диск и восстановления его с диска. Глубину прорисовки фрактала определите в программе исходя из количества свободной памяти в системе.
Вариант C.
Ассоциативным массивом (или картой) называется массив объектов с индексированием по набору заранее неизвестных и необязательно последовательных величин — ассоциаций (например строк, соответствующих названиям объектов).
Разработайте класс "Ассоциативный массив" и напишите программу рисующую на экране случайные фигуры с цветом, который пользователь задает по имени. Исходное состояние ассоциативного массива прочитайте из файла. Предусмотрите также процедуру сохранения ассоциативного массива на диске.
Вариант D.
Упорядоченным списком называется список объектов, в котором порядок следования элементов определяется из соотношений "больше‑меньше" некоторого заданного параметра (ключевой параметр). В этом случае первому элементу списка будет соответствовать элемент с наименьшим значением ключевого параметра, второй — с ключом большим, чем у первого, третий — с большим, чем у второго и т.д.
Разработайте класс "Упорядоченный список" и напишите программу, строящую упорядоченную круговую диаграмму по заданному набору величин. Предусмотрите возможности сохранения упорядоченного списка на диске и восстановления его из файла.
Вариант E.
Разработайте класс "Двусвязный список" и напишите программу создающую список из последовательных квадратов и пробегающую по этому списку от головы к хвосту и обратно. Текущий элемент списка выделяйте цветом. Предусмотрите возможности сохранения списка на диске и восстановления его из файла.
Вариант F.
Разработайте класс "Динамически изменяемый стек" и напишите программу, создающую набор произвольных объектов (например, букв на экране) и уничтожающую их в обратном порядке. Предусмотрите возможности сохранения стека на диске и восстановления его из файла.
Вариант G.
Разработайте класс "Динамически изменяемая очередь" и напишите программу, создающую набор произвольных объектов (например, окружностей на экране) и уничтожающую их в том же порядке, в котором объекты создавались. Предусмотрите возможности сохранения очереди на диске и восстановления его из файла.
-
Полнофункциональный ввод-вывод в С++.
Особенности ввода-вывод в языке С++.
В языке С++ ввод/вывод описывается как набор классов, описанный в заголовочном файле iostream.h. Аналогами потоков stdin, stdout, stderr являются классы cin, cout и cerr. Эти три потока открываются автоматически. Поток cin связан с клавиатурой, а cout, cerr - с дисплеем.
Классы iostream используют перегруженные операции “<<” для записи (занесения в поток) и операциb “>>” для чтения (извлечения из потока). Операции возвращают ссылку на тип iostream, что позволяет сцеплять потоковые операции. Они перегружаются для всех типов данных (в том числе и для пользовательских), тем самым необходимость проверки соответствия типов отпадает. Компилятор самостоятельно выбирает необходимую функцию в соответствии с типом данных:
int ivalue;
float fvalue;
char c;
cin>>ivalue>>fvalue>>c;
cout<<”integer: “<<ivalue<<endl<<” float: “<<fvalue<<”char: “<<c;
Для вставки символа перевода строки необходимо либо выводить символ ‘\n’, либо константу endl.
Для форматирования выводимых данных для объектов iostream включены следующие методы:
precision(int p) - количество знаков после запятой,
width(int w) - размер поля для вывода,
setf(long manip) - установка флагов, определяющих формат вывода(ios::dec, ios::oct, ios::hex, ios::fixed, ios::scientific, ios::left, ios::right).