- •Антонюк в.А., Задорожный с.С.
- •Первая программа на с. История языка программирования с.
- •Среда программирования «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-файла
Использование дружественных функций.
Функции, которые не являются членами класса, не имеют доступ к закрытым элементам класса. Доступ к ним можно разрешить, если объявить соответствующую функцию с помощью описателя friend:
class ClassA
{
friend void ClassB::FuncName();
friend void regularFunc(int);
};
На дружественные функции не влияют спецификаторы доступа. Описания friend не взаимны. Дружественность не наследуется.
Практическое задание.
Вариант A.
Разработайте классы "Матрица" и "Вектор", определите набор основных операций между ними и методом фиктивных цветов изобразите график следующих поверхностей:
.
Здесь — линейный оператор, действующий из в ; — вектора в — линейный оператор, сопряженный к ; — скалярное произведение между векторам и в эвклидовой метрике в :
Предусмотрите возможности сохранения матриц и векторов на диске и восстановления их из файла.
Вариант B.
Разработайте класс "Ломаная линия" и напишите программу, читающую с диска начальное и конечное положение линии и демонстрирующую последовательный переход линии из начального состояния в конечное.
Вариант C.
Разработайте классы "Матрица" и "Вектор", определите набор основных операций между ними и численно докажите следующие соотношения:
.
Результаты проиллюстрируйте графически.
Здесь — линейный оператор, действующий из в ; — линейный оператор, сопряженный к ; — пространство значений оператора ; — нуль‑пространство (ядро) оператора .
Значок ^ обозначает ортогональное дополнение к заданному пространству. Предусмотрите возможности сохранения матриц и векторов на диске и восстановления их из файла.
-
Работа в объектно-ориентированной среде.
Объектно ориентированный код во всех языках программирования имеет некоторые общие особенности, имеется семь общих стандартных характеристик истинных объектно-ориентированных программ:
-
Модульность на базе объектов
-
Абстрактные типы данных
-
Автоматическое управление памятью
-
Классы
-
Наследование
-
Полиморфизм
Объектно-ориентированные стековые операции.
Рассмотрим пример класса С++, реализующего стековые операции.
Стеком называется связный список объектов с доступом в одной точке — вершине стека. Добавлять или извлекать элементы стека можно только через его вершину. Таким образом последний добавленный элемент будет извлечен первым.
Класс, реализующий стек, является простой, объектно-ориентированной программой, хотя в нем и не используются управление памятью, наследование и полиморфизм.
В классе имеется шесть методов для управления стеком: clear() - очистка, top() - определение верхнего элемента, isempty() - проверка стека на пустоту, isfull() - проверка стека на полное заполнение, push() - извлечение из стека, pop() - заталкивание в стек.
#include <string.h>
#include <iostream.h>
class stack
{
enum {maxlen=80};
char str1[maxlen];
int first;
public:
void clear(){first=0;}
char top(){return str1[first];}
int isempty(){return (first==0);}
int isfull(){return (first==maxlen-1);}
void push(char chr){str[++first]=chr;}
char pop(){return (str1[first--]);}
};
main()
{
stack mystack;
char str[11]=”0123456789”;
mystack.clear();
int i;
// Load string to stack:
for(i=0;i<strlen(str);i++)
{
if( !mystack.isfull() )
mystack.push(str[i]);
cout<<str[i]<<endl;
}
// Unload characters from stack
while(!mystac.isempty())
cout<<mystack.pop()<<endl;
return 0;
}
Загрузка и выгрузка выполняются через верхушку стека, поэтому первый записываемый символ оказывается наиболее глубоко.