Лекция 1 Классификация С++
Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция 1 Инструкция 2 Инструкция 3 Функция 1 ( Функция 2 ( число, Функция 3 ())) Утверждение 1 Утверждение 2 Вопрос? Утверждение 1 Утверждение 2 Вопрос?
Подходы императивной парадигмы Основные – Процедурный подход – Объектно-ориентированный подход Дополнительные – Субъектно-ориентированный подход – Аспектно-ориентированный подход – Событийно-ориентированный подход – Обобщенный подход – И т.п.
Процедурный подход Программа состоит из последовательности инструкций, описывающих способ (процедуру) решения задачи посредством изменения переменных. Переменные – адресуемые (по имени или иным способом) области памяти, используемые для доступа к данным. Действие программы – последовательное изменение содержимого памяти для получения результата.
Объектно-ориентированный подход Все данные являются объектами Каждый объект имеет независимую память, состоящую из данных и, возможно, других объектов, а также набор методов для их обработки. Действие программы – последовательное взаимодействие объектов, при котором один объект требует, чтобы другой объект выполнил некоторое действие, посредством вызова соответствующего метода.
Типизация Переменные имеют тип, определяющий, какие операции применимы к значению и как их интерпретировать. Статическая типизация (имя,тип) (значение) Динамическая типизация (имя) (тип,значение)
Классификация С++ Язык С (ANSI C) – императивный процедурный язык со статической типизацией Язык С++ - императивный объектно- ориентированный язык со статической типизацией
Обобщенный процедурный язык
Виды инструкций Основные инструкции: Объявления переменных Выражения и Присваивание Инструкции ветвления: Метки Безусловные и условные переходы Инструкции группировки: Объявление и вызов функций
Объявление переменных Переменная – именованная область данных Константа – переменная, значение которой не может быть изменено Тип переменной определяет, какие операции применимы к значению и как их интерпретировать Объявление переменной – инструкция, связывающая имя переменной с некоторым типом.
Выражения и присваивание Выражение – синтаксическая конструкция, состоящая из переменных и операторов (действий над ними). Результат действия этих операторов на переменные называется значением выражения Логическое (условное) выражение, или просто условие – выражение, результатом вычисления которого являются значения «истина» или «ложь» Присваивание – инструкция, записывающая значение выражения в ассоциированную с переменной память
Переходы и метки Метка – символьное имя, назначаемое некоторой инструкции Точка входа – метка, начиная с которой исполняется программа Безусловный переход – инструкция, предписывающая продолжить исполнение программы с заданной метки Условный переход – инструкция, предписывающая продолжить исполнение программы с заданной метки, если выполнено некоторое условие
Пример: цикл с предусловием Точка входа: Инструкция 1 Инструкция 2 Метка 1: Если условие То переход на метку 2 Инструкция 3 Инструкция 4 Переход на метку 1 Метка 2: Инструкция 5 Инструкция 6... Точка входа: Инструкция 1 Инструкция 2 Метка 1: Если условие То переход на метку 2 Инструкция 3 Инструкция 4 Переход на метку 1 Метка 2: Инструкция 5 Инструкция 6...
Функции Функция (или подпрограмма) – именованная последовательность инструкций. Эта последовательность называется телом функции. Вызов функции – инструкция, предписывающая исполнить связанные с функцией инструкции, после чего продолжить исполнение со следующей после вызова инструкции Возврат – инструкция в теле функции, предписывающая продолжить исполнение программы со следующей после вызова функции инструкции
Аргументы функции Точка входа функции – метка, соответствующая началу исполнения функции Аргументы функции – необязательные связанные с функцией переменные, значения которых устанавливаются при каждом ее вызове Возвращаемые значения функции – необязательные переменные, значения которых устанавливаются при завершении функции
Пример функции функция 1: Инструкция 11 Инструкция возврат точка входа: Инструкция 1 Инструкция 2 Вызов функции 1 Инструкция 3... функция 1: Инструкция 11 Инструкция возврат точка входа: Инструкция 1 Инструкция 2 Вызов функции 1 Инструкция 3...
Виды инструкций Основные инструкции: Объявления переменных Выражения и Присваивание Инструкции ветвления: Метки Безусловные и условные переходы Инструкции группировки: Объявление и вызов функций
Пример программы на С++ float max ( float a, float b ) { if ( a > b ) return a ; return b ; } int main () { float a ; a = 0.1 ; float b = 3.2 ; // calculate result float result = max( a, b ); return 0 ; } float max ( float a, float b ) { if ( a > b ) return a ; return b ; } int main () { float a ; a = 0.1 ; float b = 3.2 ; // calculate result float result = max( a, b ); return 0 ; } Программа на C++
Пример программы на С++ float max ( float a, float b ) { if ( a > b ) return a ; return b ; } int main () { float a ; a = 0.1 ; float b = 3.2 ; // calculate result float result = max( a, b ); return 0 ; } float max ( float a, float b ) { if ( a > b ) return a ; return b ; } int main () { float a ; a = 0.1 ; float b = 3.2 ; // calculate result float result = max( a, b ); return 0 ; } Объявление переменных
Пример программы на С++ float max ( float a, float b ) { if ( a > b ) return a ; return b ; } int main () { float a ; a = 0.1 ; float b = 3.2 ; // calculate result float result = max( a, b ); return 0 ; } float max ( float a, float b ) { if ( a > b ) return a ; return b ; } int main () { float a ; a = 0.1 ; float b = 3.2 ; // calculate result float result = max( a, b ); return 0 ; } Вычисление выражений и присваивание
Пример программы на С++ float max ( float a, float b ) { if ( a > b ) return a ; return b ; } int main () { float a ; a = 0.1 ; float b = 3.2 ; // calculate result float result = max( a, b ); return 0 ; } float max ( float a, float b ) { if ( a > b ) return a ; return b ; } int main () { float a ; a = 0.1 ; float b = 3.2 ; // calculate result float result = max( a, b ); return 0 ; } Точка входа (совпадает с неявной точкой входа в функцию main)
Точка входа в программу на С++ Без аргументовС аргументами командной строки Без кода возврата С кодом возврата int main () { return 0; } int main () { return 0; } void main ( int argc, char** argv) { } void main ( int argc, char** argv) { } int main ( int argc, char** argv) { return 0 ; } int main ( int argc, char** argv) { return 0 ; } void main () { } void main () { }
Пример программы на С++ float max ( float a, float b ) { if ( a > b ) return a ; return b ; } int main () { float a ; a = 0.1 ; float b = 3.2 ; // calculate result float result = max( a, b ); return 0 ; } float max ( float a, float b ) { if ( a > b ) return a ; return b ; } int main () { float a ; a = 0.1 ; float b = 3.2 ; // calculate result float result = max( a, b ); return 0 ; } Функции
Пример программы на С++ float max ( float a, float b ) { if ( a > b ) return a ; return b ; } int main () { float a ; a = 0.1 ; float b = 3.2 ; // calculate result float result = max( a, b ); return 0 ; } float max ( float a, float b ) { if ( a > b ) return a ; return b ; } int main () { float a ; a = 0.1 ; float b = 3.2 ; // calculate result float result = max( a, b ); return 0 ; } Вызов и возврат
Пример программы на С++ float max ( float a, float b ) { if ( a > b ) return a ; return b ; } int main () { float a ; a = 0.1 ; float b = 3.2 ; // calculate result float result = max( a, b ); return 0 ; } float max ( float a, float b ) { if ( a > b ) return a ; return b ; } int main () { float a ; a = 0.1 ; float b = 3.2 ; // calculate result float result = max( a, b ); return 0 ; } Аргументы и возвращаемые значения функции