Программирование на языке высокого уровня.ppt
- Количество слайдов: 34
Программирование на языке высокого уровня Язык программирования C++ ст. преп. Федоров А. М.
Литература 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 данные, инструкции; функции, параметры; ввод/вывод: файлы, потоки; проект: заголовочные файлы, компановка; ООП: С++ - язык с классами n n n 2004 г. Парадигмы программирования классы и объекты конструктор и деструктор перегрузка операторов (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 3
Введение "Самое важное при изучении С++ сконцентрировать внимание на концепциях и не потеряться в технических деталях языка " Б. Страуструп – автор С++ 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 4
Этапы разработки программы 1. 2. анализ: ясное понимание задачи; проектирование: определение ключевых концепций, в терминах которых выражается решение задачи; 3. программирование: воплощение решения в программе Цель: изучение языка С++ как инструмента используемого на всех этапах 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 5
Программа, язык и среда программирования высокого уровня 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 */-+, >=< , |& выбор (условие), цикл, множественный выбор, 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 История Назначение Возможности и назначение языка С++ Обзор типов задач, которые необходимо уметь решать: n n o 2004 г. библиотеки и функции (передача параметров) работа с файлами, создание классов, перегрузка операторов; Среды программирования Borland C++ и C++Builder (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 14
Пример программы на языке С и С++ #include
Базовые элементы С++: Типы данных Фундаментальные типы данных: 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 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) называют переменную, значением которой является некоторый адрес другого объекта в памяти
Базовые элементы С++: Массивы. Строки Нумерация с 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
Нисходящее проектирование ( «Сверху вниз» ) Последовательное решение задач: n n n глобальные задачи; подзадачи; детализация; Пример: Vvod. Dannyx(){}; //функции в которых решаются Rasschet(){}; //отдельные задачи Vyvod. Rezult(){}; main(){ //главная программа Vvod. Dannyx(); //из подзадач Rasschet(); //складывается решение Vyvod. Rezult(); } 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 24
Базовые элементы С++: Инструкции В состав каждой функции входят: 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 =3 ; b=0; if ( a == b ) {cout << b <
Инструкции: цикл с предусловием С предусловием: while (<условное_выражение>) <оператор> My. F(){ while( ! eof(A) ){ My. Read()/*читать из файла*/; My. Out()/*выводить на экран*/; } } 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 27
Инструкции: цикл с постусловием С постусловием: 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 (int i=0; i<10; i++) {cout << i<<“-й элемент =”; cout << Arr[i]; } } 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 29
Базовые элементы С++: Блоки и области видимости #include
Процедурное программирование (Функции) o o Программа на С++ состоит из функций. Функция – это логически законченная программа n n o Каждая функция имеет n n n 2004 г. выполняющая действие над входными параметрами и в конце своей работы возвращающая результат. собственное имя, набор входных параметров и один выходной параметр. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 31
Пример функции, возвращающей сумму двух целых величин #include
Спасибо за внимание
Базовые элементы С++: Операции и выражения преобразование типов: явное и неявное 2004 г. (С) Андрей М. Федоров - am_fedorov@mail. ru -- КФ Петр. ГУ 34


