- •Антонюк в.А., Задорожный с.С.
- •Первая программа на с. История языка программирования с.
- •Среда программирования «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-файла
Дополнительные средства (typedef и enum).
При помощи оператора typedef можно связать новые типы данных с существующими:
typedef double real;
После такого описания можно использовать real вместо double.
Использовать typedef необходимо с осторожностью. Слишком много новых типов могут ухудшить читаемость программы.
Перечисляемый тип данных enum позволяет определить список последовательных данных. Объявление перечисляемого типа выглядит следующим образом:
enum поле_тега {имя1=знач1, имя2=знач2, имя3=знач3, …}переменная;
Здесь имя1, имя2,… – это имена констант. Им можно присваивать целочисленные значения. Если значения не присвоены, то предполагается, что они упорядочены по возрастанию и начинаются с нуля. Под эти константы во время выполнения память не выделяется. Удобно использовать этот оператор для создания констант, если не указывать поле_тега и переменную:
enum (с28=28, с29,с30,c31);
Тип enum часто используется, когда информацию можно представить списком целых значений, подобно номерам дней недели или месяцев в году:
enum months
{Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec}
current_month;
current_month=Dec;
int diff=(int)current_month-2;
Поскольку имена эквивалентны последовательным целым значениям, то с ними можно выполнять арифметические операции. Фактически в данном примере переменной current_month присваивается целочисленное значение 12.
-
Введение в объектно-ориентированное программирование. Принципы объектно-ориентированного программирования.
Ранее мы использовали методы процедурно ориентированного программирования, в которых программа структурируется так, что имеется главная функция и, возможно, несколько других функций, вызывающихся из главной. Это – подход «сверху - вниз». программа начинается с первого оператора главной функции и заканчивается последней командой этой же функции. При таком подходе код и данные разделены. Процедуры определяют, что происходит с данными, но никогда не бывает наоборот.
При объектно ориентированном программировании ситуация меняется. Объектно-ориентированные программы функционируют иначе. Программа состоит из набора объектов, зачастую связанных друг с другом. В языке С++ объекты создаются при помощи нового типа данных class. Класс состоит из набора данных и функций-членов класса, работающих с этими данными. Манипулировать полученными классами можно посредством сообщений.
Преимущества ООП:
-
Программы легче читать и понимать, т.к. программист видит только необходимые детали.
-
Программы легко модифицируются. Для изменения программы достаточно убрать или добавить объекты.
-
Объекты можно использовать многократно.
Недостатком ООП можно считать то, что практически невозможно процедурно ориентированную программу превратить в объектно ориентированную.
Терминология объектно-ориентированного программирования.
ООП – это метод программирования, позволяющий рассматривать модель решаемой задачи как набор объектов. манипулировать с объектами можно при помощи сообщений, которые напоминают вызовы функций в процедурно ориентированной программе. Когда объект получает сообщение, на него реагируют методы, содержащиеся в этом объекте. Методы аналогичны функциям, однако они являются частью объекта.
Классы С++ являются расширением типа С и С++ struct и образуют необходимый абстрактный тип данных для ООП. Объект представляет собой экземпляр класса.
Основными понятиями, на которых основано ООП являются инкапсуляция, наследование и полиморфизм.
Инкапсуляция – это способ объединения данных объекта и функций-членов в единую структуру.
Наследованием называется способность класса наследовать свойства других классов. Родительский класс служит для производного класса образцом, который можно изменять различными способами. Эта концепция имеет большое значение, поскольку позволяет повторно использовать описание класса без изменений в основном коде.
Полиморфизм – это концепция, смысл которой в следующем: одни и те же сообщения можно посылать объектам родительского класса и объектам всех производных классов. Полиморфизм позволяет каждому объекту подкласса реагировать по-своему на одинаковые сообщения.
Благодаря полиморфизму объекты могут реагировать на сообщения из программ, даже если точный тип объекта неизвестен. В С++ эта возможность реализуется с помощью механизма виртуальных функций. При использовании виртуальных функций сообщения передаются не непосредственно объекту, а в виде указателя, ссылающегося на объект. Для адресации виртуальные функции используют таблицу, которая инициализируется на этапе выполнения.