Скачать презентацию Программирование на языке высокого уровня Язык программирования C++ Скачать презентацию Программирование на языке высокого уровня Язык программирования C++

Программирование на языке высокого уровня.ppt

  • Количество слайдов: 34

Программирование на языке высокого уровня Язык программирования C++ ст. преп. Федоров А. М. Программирование на языке высокого уровня Язык программирования C++ ст. преп. Федоров А. М.

Литература o o (файл) Павловская Т. А. С/С++. Программирование на языке высокого уровня – Литература o o (файл) Павловская Т. А. С/С++. Программирование на языке высокого уровня – Спб. : Питер, 2004. – 461 с. : ил. ISBN 5 -94723 -568 -4 (файл) Страуструп Б. Язык программирования С++, 3 -е изд. / Пер. с англ. – СПб. ; М. . : «Невский Диалект» - «Издательство БИНОМ» , 1999 г. – 991 с. , ил. ISBN 5 -7940 -0031 -7 o (библ. ) Франка П. С++: Учебный курс. o (библ. ) Симонович С. В. Информатика: 2004 г. – Спб. : Питер, 2001. -528 с. : ил. ISBN 5 -314 -00136 -5 Базовый курс. – СПб. : Питер, 2002. -640 с. : ил. ISBN 58046 -0134 -2 (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 2

План o Введение n o Обзор: С++ - универсальный язык n n o данные, План o Введение n o Обзор: С++ - универсальный язык n n o данные, инструкции; функции, параметры; ввод/вывод: файлы, потоки; проект: заголовочные файлы, компановка; ООП: С++ - язык с классами n n n 2004 г. Парадигмы программирования классы и объекты конструктор и деструктор перегрузка операторов (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 3

Введение Введение "Самое важное при изучении С++ сконцентрировать внимание на концепциях и не потеряться в технических деталях языка " Б. Страуструп – автор С++ 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 4

Этапы разработки программы 1. 2. анализ: ясное понимание задачи; проектирование: определение ключевых концепций, в Этапы разработки программы 1. 2. анализ: ясное понимание задачи; проектирование: определение ключевых концепций, в терминах которых выражается решение задачи; 3. программирование: воплощение решения в программе Цель: изучение языка С++ как инструмента используемого на всех этапах 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 5

Программа, язык и среда программирования высокого уровня o Программа, язык и среда программирования высокого уровня o "Программа это совокупность данных продуманной структуры и алгоритмов их обрабатывающих" Н. Вирт Архитектура фон-Неймана: n o ЯПВУ: n o удобные средства программ-я (см. парадигмы); Среда программирования: n 2004 г. память: активный код и пассивные данные; интегрированные визуальные средства (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 6

Парадигмы программирования Парадигма – стиль, который поддерживает язык программирования, предоставляя для этого удобные (надежные, Парадигмы программирования Парадигма – стиль, который поддерживает язык программирования, предоставляя для этого удобные (надежные, эффективные, …) средства. Исторические этапы развития парадигмы: o o алгоритмическое программирование; процедурное программирование; модульное программирование; абстракция данных (пользовательские типы) n n n o 2004 г. конкретные типы абстрактные типы иерархия классов обобщенное программирование (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 7

Алгоритмическое программирование Относительная простота. Удобство. Переносимость. Доступность o Стандартные типы данных: n n n Алгоритмическое программирование Относительная простота. Удобство. Переносимость. Доступность o Стандартные типы данных: n n n o n n */-+, >=< , |& выбор (условие), цикл, множественный выбор, if for switch Стандартные библиотеки функций: n n 2004 г. int, float, char Инструкции (операторы) n o объявление и определение, операции и выражения, преобразование типов, ввод/вывод cout<<, cin>> математические, символьные и др. pow(), … (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 8

Процедурное программирование Удобство программирования. Повторное использование. «Реши, какие требуются процедуры; используй наилучшие доступные алгоритмы» Процедурное программирование Удобство программирования. Повторное использование. «Реши, какие требуются процедуры; используй наилучшие доступные алгоритмы» Главные вопросы: o o o передача аргументов в функции, возвращение результата из функции, виды аргументов, виды функций. int sort(int *Mas[], int Elem); Языки: Фортран, а Алгол 60, Алгол 68, Паскаль и С 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 9

Модульное программирование Рост размера программ. Интерес к организации данных. «Реши какие требуются модули. Разбей Модульное программирование Рост размера программ. Интерес к организации данных. «Реши какие требуются модули. Разбей программу так, чтобы скрыть данные в модулях (принцип сокрытия данных)» Главные задачи: 1. 2. 3. 2004 г. построение пользовательского программного интерфейса для данных в модуле – (функции внутри каждого модуля); гарантировать, что использование скрываемых данных доступно только через интерфейс; обеспечить инициализацию данных до первого использования; Раздельная компиляция модулей (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 10

Абстрактные типы данных: Конкретные типы, определяемые пользователем Создание более чем одного объекта пользовательского типа. Абстрактные типы данных: Конкретные типы, определяемые пользователем Создание более чем одного объекта пользовательского типа. «Реши, какие требуются типы; обеспечь полный набор операций для каждого типа» Главные задачи: o o o Выделение отдельной сущностей в классы; Определение функций и операций для работы с экземплярами/объектами этого класса – (сокрытие данных); Процедуры инициализации и удаление объекта класса Конкретные типы ведут себя почти как встроенные 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 11

Абстрактные типы данных: Иерархия классов Много негибких типов данных, которые «живут» сами по себе Абстрактные типы данных: Иерархия классов Много негибких типов данных, которые «живут» сами по себе . «Реши, какие требуются классы, обеспечь полный набор операций для каждого класса; явно вырази общность через наследование» Главная задача: o o o 2004 г. отделить частные свойства объектов от общих - последние выделить в абстрактный класс; связь родственных типов друг с другом; множественное наследование (иерархия); (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 12

Абстрактные типы данных: Иерархия классов Типы с одинаковой функциональностью, но различным наполнением «Реши, какие Абстрактные типы данных: Иерархия классов Типы с одинаковой функциональностью, но различным наполнением «Реши, какие требуются алгоритмы; параметризуй их так, чтобы они могли работать со множеством подходящих типов и структур данных » Пример – сортировка – неважно, что сортировать, важно как! 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 13

Универсальный язык С++ o o История Назначение Возможности и назначение языка С++ Обзор типов Универсальный язык С++ o o История Назначение Возможности и назначение языка С++ Обзор типов задач, которые необходимо уметь решать: n n o 2004 г. библиотеки и функции (передача параметров) работа с файлами, создание классов, перегрузка операторов; Среды программирования Borland C++ и C++Builder (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 14

Пример программы на языке С и С++ #include <stdio. h> int main(){ int i; Пример программы на языке С и С++ #include int main(){ int i; printf("Введите целое числоn"); scanf ("%d", &i); printf("Вы ввели число %d. спасибо!", i); return 0; } #include int main(){ int i; cout << "Введите целое числоn"; cin >> i; cout << "Вы ввели число " << i << ". спасибо!"; return 0; 15 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ }

Базовые элементы С++: Типы данных Фундаментальные типы данных: n Арифметические типы: o Интегральные типы Базовые элементы С++: Типы данных Фундаментальные типы данных: n Арифметические типы: o Интегральные типы n логический тип (bool) n символьный тип (например, char) n целый тип (например, int) o тип с плавающей точкой (например, double) пустой тип void Типы определяемые пользователем n o n n o Встроенные типы n n n 2004 г. перечислимый тип (enum) структуры данных и классы (struct, class) указатели (например, int*) массивы (например, char[]) ссылки (например, double&) (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ Пример: double x; int a = 7; float b = 9; x = a + b; 16

Базовые элементы С++: Характеристики типов тип Символьный тип Целые типы Типы с плавающей точкой Базовые элементы С++: Характеристики типов тип Символьный тип Целые типы Типы с плавающей точкой Логический тип 2004 г. Длина, байт Диапазон char unsigned char int short int unsigned int long int unsigned long int 1 1 2 -128, … 127 0, … 255 -32768, … 32767 2 4 4 0, … 65535 -2147483648. . 2147483647 float double 4 8 3. 4 e-38… 3. 4 e 38 long double 10 В ранних версиях языка логического типа нет bool - любой 0 – это ложь, в противном случае - истина Возможны два значения {true, false} (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ – истина или ложь 17

Базовые элементы С++: Объявление и описание o declaration 1) объявление - предложение, o definition Базовые элементы С++: Объявление и описание o declaration 1) объявление - предложение, o definition 1) описание - конструкция, размещающая связывающее идентификатор с относящейся к нему информацией; в некоторых случаях может быть одновременно и описанием память и инициализирующая переменную, функцию или класс; Пример: int a; // объявление переменной int b = 0; // объявление с описанием const double DD = 23. 72; //объявление константы 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 18

Базовые элементы С++: Идентификаторы Идентификатор – любая не зарезервированная последовательность из букв и цифр, Базовые элементы С++: Идентификаторы Идентификатор – любая не зарезервированная последовательность из букв и цифр, начинающаяся с буквы максимальная длинна - 32 символа; n чувствительность к регистру букв (case sensitive); int My. Integer; double my. Inte. Ger; n Ключевые слова языка - зарезервированные идентификаторы: if, for, while, return, break, continue, … 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 19

Базовые элементы С++: Операции и выражения Арифметические: +, -, *, /, % -остаток; Побитовые: Базовые элементы С++: Операции и выражения Арифметические: +, -, *, /, % -остаток; Побитовые: | -или, & -и, ^- исключающее или; Логические: >, =, <, ! – не, || -или, && -и, Адресные операции: & - взятие адреса, * - разыменование o o Каждое выражение имеет результат. Тип результата зависит от типов объектов, из которых состоит выражение: int z, b, c, x, y; double d; bool k, m, n; z = a + b*(c - d); k = m >= n; x = y ^ 0 x 0101; 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 20

Базовые элементы С++: Указатели Указателем (pointer) называют переменную, значением которой является некоторый адрес другого Базовые элементы С++: Указатели Указателем (pointer) называют переменную, значением которой является некоторый адрес другого объекта в памяти *obj; - obj указатель на объект типа T o int k; int *pk; //указатель на целое pk = &k; //в указатель записать адрес k *pk = *pk +1; // к адресуемому объекту +1, т. е. k pk = pk + 1; // к адресу прибавить 1 Пустой указатель – ни на что не указывает (записанный адрес = 0) 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 21

Базовые элементы С++: Массивы. Строки Нумерация с 0; o Обработка поэлементная в цикле; o Базовые элементы С++: Массивы. Строки Нумерация с 0; o Обработка поэлементная в цикле; o Объявление и описание: int Mas[10]; double Arr[5][5]; int Vec[40] = {1, 2, 3, 4}; /*первые 4 элем. – остальные 0*/ char Name[25]; char FIO[] = “Петрович”; //автоматич. размер +1 o Использование: Arr[0][0] = 10. 10; Mas[0]=Mas[1]+Mas[2]; o Строка в С – это массив символов char[] в ASCIIZ формате. Для работы с такими строками библиотека: string. h 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 22

Структура программы на С++ Минимальная программа: main(){} Пример программы: //программа № 2 #include<iostream. h> Структура программы на С++ Минимальная программа: main(){} Пример программы: //программа № 2 #include int A = 2, B = 3; int Otv; void main() { cout <<"сколько будет "; cout << A << "+"<< B << endl; cin >> Otv; if(Otv == A+B) {cout << ”верно!”; } else {cout<<”нет!!!”; } } 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 23

Нисходящее проектирование ( «Сверху вниз» ) Последовательное решение задач: n n n глобальные задачи; Нисходящее проектирование ( «Сверху вниз» ) Последовательное решение задач: n n n глобальные задачи; подзадачи; детализация; Пример: Vvod. Dannyx(){}; //функции в которых решаются Rasschet(){}; //отдельные задачи Vyvod. Rezult(){}; main(){ //главная программа Vvod. Dannyx(); //из подзадач Rasschet(); //складывается решение Vyvod. Rezult(); } 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 24

Базовые элементы С++: Инструкции В состав каждой функции входят: n n объявление и определение Базовые элементы С++: Инструкции В состав каждой функции входят: n n объявление и определение переменных; инструкции, из которых строятся алгоритмы; Инструкции (Операторы): n n присваивание, условие, цикл, множественный выбор Пример: Beg (){int a[5], i; for(i=0; i<5; i++){…}; } End (){double d; d=d+1; if(d!=1){…}; } main(){ Beg(); End(); } 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 25

Инструкции: условный оператор if (усл_выражение) <оператор 1>; [else <оператор 2>] My. T(){ int a Инструкции: условный оператор if (усл_выражение) <оператор 1>; [else <оператор 2>] My. T(){ int a =3 ; b=0; if ( a == b ) {cout << b <

Инструкции: цикл с предусловием С предусловием: while (<условное_выражение>) <оператор> My. F(){ while( ! eof(A) Инструкции: цикл с предусловием С предусловием: while (<условное_выражение>) <оператор> My. F(){ while( ! eof(A) ){ My. Read()/*читать из файла*/; My. Out()/*выводить на экран*/; } } 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 27

Инструкции: цикл с постусловием С постусловием: do <оператор> while <условное_Выражение> My. D(){ int i=0; Инструкции: цикл с постусловием С постусловием: do <оператор> while <условное_Выражение> My. D(){ int i=0; do cin >> i; /*потоковый ввод с клавиатуры*/ while (i<4 || i>48) } 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 28

Инструкции: цикл с параметром Цикл с параметром: for (<нач_оператор>; <выр_1>; <выр_2>) <оператор_тела_цикла> My. Z(){ Инструкции: цикл с параметром Цикл с параметром: for (<нач_оператор>; <выр_1>; <выр_2>) <оператор_тела_цикла> My. Z(){ for (int i=0; i<10; i++) {cout << i<<“-й элемент =”; cout << Arr[i]; } } 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 29

Базовые элементы С++: Блоки и области видимости #include<stdlib. h> int i = 45; My. Базовые элементы С++: Блоки и области видимости #include int i = 45; My. S(){ if (1) { int k =34; //имя k определено до конца усл. оператора int i =k; //это объявление i «перекрывает» объявление : : i=46 // внешнего блока //обращение к глобальной i } k = 5; //ошибка: . < уже не существует i = i + 1; //i = 47 «перекрытие» кончилось } main(){ } 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 30

Процедурное программирование (Функции) o o Программа на С++ состоит из функций. Функция – это Процедурное программирование (Функции) o o Программа на С++ состоит из функций. Функция – это логически законченная программа n n o Каждая функция имеет n n n 2004 г. выполняющая действие над входными параметрами и в конце своей работы возвращающая результат. собственное имя, набор входных параметров и один выходной параметр. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 31

Пример функции, возвращающей сумму двух целых величин #include <iostream. h> int sum(int a, int Пример функции, возвращающей сумму двух целых величин #include int sum(int a, int b); // объявление функции int main(){ int a = 2, b = 3, с d; с = sum(a, b); // вызов функции cin >> d; cout << sum(c, d); // вызов функции return 0; } int sum(int a, int b){ // определение функции return (a + b); } 2004 г. (С) Андрей М. Федоров - amfedorov@mail. ru -- КФ Петр. ГУ - 32

Спасибо за внимание Спасибо за внимание

Базовые элементы С++: Операции и выражения преобразование типов: явное и неявное 2004 г. (С) Базовые элементы С++: Операции и выражения преобразование типов: явное и неявное 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 34