©ρŧą1 Программирование на C++ Павловская Татьяна Александровна, проф. каф. ИПМ, к. 378. e-mail: mux@tp2055.spb.edu.

Презентация:



Advertisements
Похожие презентации
©Павловская Т.А. Язык С++ Курс «С++. Программирование на языке высокого уровня» Павловская Т.А.
Advertisements

Лекция 2 С => C++ => C# Большие и маленькие буквы различаются (main, Main, MAIN, mAin – разные имена) После каждого оператора ставится точка с запятой.
Унифицированный язык моделирования UML является графическим языком для визуализации, конструирования и документирования систем, в которых большая роль.
Кандидат технических наук, доцент Грекул Владимир Иванович Учебный курс Проектирование информационных систем Лекция 9.
Проектирование архитектуры ИСО 1. UML 2 Структура определения языка 4.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 7.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Элементы языка СИ Средства для написания простейших программ.
Лекция 1 по дисциплине «Программные средства математических расчетов» тема: «Основы языка С++» гр. 8Е31 Мамонова Татьяна Егоровна
1 Диаграммы реализации (implementation diagrams).
Основы программирования. Типы данных Учебное пособие по курсу «Основы программирования» Преподаватель Алексеева Н.Н. Санкт-Петербургский колледж информационных.
Разработка объектно- ориентированного ПО Итеративная модель разработки (развитие водопадной модели) анализ проектирование кодирование тестирование.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 4 Работа с бинарными файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков.
Информационные технологии Классы памяти auto static extern register Автоматические переменные создаются при входе в функцию и уничтожаются при.
2. UML – унифицированный язык моделирования систем.
Лекция 8 Область видимости Время жизни. Область видимости Область видимости – характеристика именованного объекта Область видимости - часть текста программы,
Трехслойная архитектура приложений, основанных на использовании баз данных.
ЛЕКЦИЯ 7 КЛАССЫ ПАМЯТИ И ОБЛАСТЬ ДЕЙСТВИЯ ОБЪЕКТОВ.
Данные в программах и алгоритмах Программы и их алгоритмы пишутся для обработки данных. Чтобы реализовать алгоритм, программам необходимо работать с данными.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 1 Процедурный подход к разработке программ (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем,
Транксрипт:

©ρŧą1 Программирование на C++ Павловская Татьяна Александровна, проф. каф. ИПМ, к

©ρŧą2 Литература 1. Пол И. Объектно-ориентированное программирование с использованием С++. - К: ДиаСофт, Шилдт Г. Теория и практика С++. - СПб.: BHV, Подбельский В.В. Язык Си++: Учебное пособие. - М.: ФиC, Страуструп Б. Язык программирования С++. - СПб.: БИНОМ, Р. Лафоре. Объектно-ориентированное программирование в С++. СПб: ПИТЕР, 2003 г. 928 с. 6. Мейерс С. Эффективное использование С++. - М: ДМК, Элджер Д. С++: Библиотека программиста. - CПб.: Питер, Голуб А.И. С и С++. Правила программирования. М: БИНОМ, Аммерааль Л. STL для программистов на С++. - М: ДМК, Дж. Коплиен. Программирование на С++. СПб: ПИТЕР, 2005 г. 479 с.

©ρŧą3 Литература 11. Павловская Т.А. C/C++. Программирование на языке высокого уровня. CПб.: Питер, 2001, Павловская Т.А., Щупак Ю.А. С/С++. Структурное программирование: Практикум. СПб: ПИТЕР, Павловская Т.А., Щупак Ю.А. С/С++. Объектно- ориентированное программирование: Практикум. СПб: ПИТЕР, Саттер Г. Решение сложных задач на C++. Серия C++ In-Depth, т.4. Москва: Издательский дом «Вильямс», 2002 г. 400 с. 15. Александреску А. Современное проектирование на С++. Серия C++ In-Depth, т.3. Москва: Издательский дом «Вильямс», 2002 г. 336 с. 16. Кениг Э., Му Б. Эффективное программирование на С++. Серия C++ In-Depth, т.2. Москва: Издательский дом «Вильямс», 2002 г. 384 с.

©ρŧą4 Литература 17. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. СПб: ПИТЕР, 2001 г. 368 с. 18. Влиссидес Дж. Применение шаблонов проектирования. Дополнительные штрихи. Москва: Издательский дом «Вильямс», 2003 г. 144 с. 19. Шаллоуей А., Тротт Д. Шаблоны проектирования. Новый подход к объектно-ориентированному анализу и проектированию. Москва: Издательский дом «Вильямс», 2002 г. 288 с. 20. Штерн В. Основы С++. Методы программной инженерии. Москва: ЛОРИ, 2003 г. 860 с. 21. В. Лаптев. С++. Экспресс-курс. СПб: БХВ-Петербург, 2004 г. 512 с. 22. Б. Эккель. Философия С++. СПб: ПИТЕР, 2004 г. 572 с.

©ρŧą5 23. К. Бек. Экстремальное программирование. СПб: ПИТЕР, К. Бек, М. Фаулер. Экстремальное программирование. Планирование. СПб: ПИТЕР, 2003 г. 144 с. 25. К. Ауэр, Р. Миллер. Экстремальное программирование. Постановка процесса. СПб: ПИТЕР, 2003 г. 368 с. 26. К. Лоудон. С++. Краткий справочник. СПб: ПИТЕР, 2004 г. 220 с. 27. С. Уэллин. Как не надо программировать на С++. СПб: ПИТЕР, 2004 г. 240 с. 28. А. Крупник. Изучаем С++. СПб: ПИТЕР, 2003 г. 251 с. 29. С. Макконнелл. Совершенный код. СПб: «Питер», с. 30. Стандарт С++: INTERNATIONAL ISO/IEC STANDARD , 2003 Литература

©ρŧą6

7 Отчетность по курсу 6 лаб. работ в паре Перевод не менее 2 маш. страниц стандарта (>= 3600 печ. зн. англ. текста с пробелами) Простой тест в ЦДО (язык С) Экзамен (тесты с Brainbench.com)

©ρŧą8 «Качели» - как проектируются программы :) 1973

©ρŧą9

10

©ρŧą11

©ρŧą12

©ρŧą13

©ρŧą14 Критерии качества ПО Внешние характеристики корректность практичность эффективность надежность целостность адаптируемость … Внутренние характеристики удобство сопровождения тестируемость удобочитаемость гибкость портируемость …

©ρŧą15 Для достижения этих целей программа должна: иметь простую структуру быть хорошо читаемой быть легко модифицируемой Основные критерии качества программы надежность возможность точно планировать производство и сопровождение

©ρŧą16 Парадигмы программирования Парадигма способ организации программы, то есть принцип ее построения. Наиболее распространенными являются процедурная и объектно-ориентированная парадигмы. Они различаются способом декомпозиции, положенным в основу при создании программы. Процедурная декомпозиция состоит в том, что задача, реализуемая программой, делится на подзадачи, а они, в свою очередь на более мелкие этапы, то есть выполняется пошаговая детализация алгоритма решения задачи. Объектно-ориентированная декомпозиция предполагает разбиение предметной области на объекты и реализацию этих объектов и их взаимосвязей в виде программы. Кроме того, существуют функциональная и логическая парадигмы.

©ρŧą17 Стратегии создания ПО Водопад- ная Итеративные Инкремен- тная Эволюци- онная В начале определены все требования? ++- Циклов конструирования 1>1 Промежуточное ПО распространяется? - +

©ρŧą18 Технологии программирования Технология программирования способ организации процесса создания программы. На разных уровнях и по разным критериям выделяют пересекающиеся модели: Нисходящее (структурное) программирование Макетирование Спиральная (итерационная) модель разработки ПО Объектно-ориентированное программирование Компонентный подход (COM, CORBA) САSЕ-технологии RAD RUP Экстремальное программирование

©ρŧą19 Постановка задачи Анализ Проектирование Реализация Модификация Классическая модель жизненного цикла ПО:

©ρŧą20 Спиральная модель разработки ПО Программное обеспечение создается итерационно с использованием метода прототипирования. Прототипом называют действующий программный продукт, реализующий отдельные функции и внешние интерфейсы разрабатываемого программного обеспечения. Постановка задачи Анализ Проектирование Реализация

©ρŧą21 Унифицированный процесс разработки ПО управляемый вариантами использования архитектурно- ориентированный итеративный и инкрементный использует UML основан на компонентном подходе, использует стандарт визуального моделирования Разработка делится на мини-проекты (итерации), в ходе которых реализуется группа вариантов использования. Итерации не обязательно аддитивны. Варианты использования Архитектура УправляетНаправляет

©ρŧą22 Жизненный цикл УП Каждый цикл состоит из 4х фаз, каждая фаза разделяется на итерации Результатом каждого цикла является новый выпуск системы Каждая фаза заканчивается вехой Веха определяется по наличию определенного набора артефактов Артефакт – любой вид информации, создаваемый, изменяемый и используемый сотрудниками при создании системы Цикл 1Цикл 2 … Цикл n Анализ и планирование требований Проектирован ие ПостроениеВнедрение Итер. 1Итер. 2Итер. 3…Итер. m

©ρŧą23 Цикл разработки Анализ и планировани е требований Проектирова ние ПостроениеВнедрение Итер. 1Итер. 2Итер. 3…Итер. m Требования Анализ Проектирова ние Реализация Тестирование Фазы Раб. процессы Итерация

©ρŧą24 Модели УП Модели – наиболее важный тип артефактов. Каждая модель описывает систему с определенной точки зрения на определенном уровне абстракции. Вариантов использования Анализа Проектирования Развертывания Реализации Тестирования Все модели связаны, они полностью описывают систему. Набор моделей дает варианты обозрения системы для всех сотрудников.

©ρŧą25 UML UML - Unified Model Language - является языком для специфицирования, визуализации, конструирования и документирования программных продуктов, а также используется в бизнес-моделировании и моделировании любых иных (не программных) систем. UML позволяет задавать следующие аспекты: Диаграммы вариантов использования (use case diagrams) Диаграммы классов (class diagrams) Диаграммы поведения Диаграммы состояний (statechart diagrams) Диаграммы действий (activity diagrams) Диаграммы взаимодействия (interaction diagrams) Диаграммы последовательностей(sequence diagrams) Диаграммы взаимодействий(collaboration diagrams) Диаграммы реализации (implementation diagrams) Диаграммы компонент (component diagram) Диаграммы развертывания (deployment diagram)

©ρŧą26 Диаграммы вариантов использования (Use case diagrams)

©ρŧą27 Диаграммы деятельности (Activity diagrams)

©ρŧą28 Диаграммы последовательностей действий (Sequence diagrams)

©ρŧą29 Диаграммы компонент (Component diagrams)

©ρŧą30 Экстремальное программирование Основная идея экстремального программирования (ХР) устранить высокую стоимость изменений, вносимых в ПО в процессе как разработки, так и эксплуатации. Цикл разработки в ХР состоит из очень коротких итераций. Четырьмя базовыми действиями в цикле являются: выслушивание заказчика проектирование кодирование тестирование. Заказчик постоянно присутствует в группе разработчиков. При принятии решений всегда стремятся выбрать самое простое, тесты пишутся еще до написания кода, а сборка системы выполняется ежедневно.

©ρŧą31 Основные принципы ХР Планирование Частая смена версий Метафора Простой проект Тесты Переработка системы Программирование в паре Непрерывная интеграция Коллективное владение Заказчик с постоянным у частием 40-часовая неделя Открытое рабочее пространство Стандарты кодирования Не более чем правила Область применимости ХР: небольшие и средние проекты.

©ρŧą32

©ρŧą33 Базовые средства С++ Типы данных С++ Структура программы Переменные и выражения Базовые конструкции структурного программирования (операторы ветвления, цикла и т.д.) Указатели и ссылки Массивы, строки Типы данных, определяемые пользователем (enum, struct, union)

©ρŧą34 a-z, A-Z, 0-9,, {,},|,/,%,… - идентификаторы - ключевые слова - константы - знаки операций - разделители a b/c a=b; for (int i=0;i

©ρŧą35 директивы препроцессора описания int main() { операторы главной функции } int f1() { операторы функции f1 } int f2() { операторы функции f2 } Пример структуры программы

©ρŧą36 ВидПримеры Целые дес Восьм Шестн.0xA0x1B80X00FF Веществ Вещ. с плав. т.0.2E6.11e–3 5E10 Символьные'A'ю'*'db'\0' '\n'\012'\x07\x07' Строковые"Здесь был Vasia" " \tЗначение r=\0xF5\n" Константы

©ρŧą37 \a7Звуковой сигнал \b8Возврат на шаг \fCПеревод страницы (формата) \nAПеревод строки \rDВозврат каретки \t9Горизонтальная табуляция \vBВертикальная табуляция \\5CОбратная косая черта \'27Апостроф \"22Кавычка \?3FВопросительный знак \0dddВосьмеричный код символа \0xddddШестнадцатиричный код символа Управляющие последовательности

©ρŧą38 Тип данных определяет: внутреннее представление данных в памяти компьютера => множество значений, которые могут принимать величины этого типа; операции и функции, которые можно применять к величинам этого типа. Типы в С++ делятся на основные (fundamental) и составные (compound). Тип может описывать объект, ссылку или функцию. Типы данных

©ρŧą39 int (целый); char (символьный); wchar_t (расширенный символьный); bool (логический); float (вещественный); double (вещественный с двойной точностью). Спецификаторы: short (короткий); long (длинный); signed (знаковый); unsigned (беззнаковый). + void Основные (стандартные) типы данных: intergal

©ρŧą40 Составные типы arrays of objects of a given type; functions, which have parameters of given types and return void or references or objects of a given type; pointers to void or objects or functions of a given type; references to objects or functions of a given type; classes containing a sequence of objects of various types, a set of types, enumerations and functions for manipulating these objects, and a set of restrictions on the access to these entities; unions, which are classes capable of containing objects of different types at different times; enumerations, which comprise a set of named constant values. Each distinct enumeration constitutes a different enumerated type; pointers to non-staticclass members

©ρŧą41 ТипДиапазон значений Размер(байт) booltrue и false1 signed char–128 … 1271 unsigned char0 … 2551 signed short int– … unsigned short int0 … signed long int– … unsigned long int0 … float3.4e–38 … 3.4e+384 double1.7e–308 … 1.7e long double3.4e–4932 … 3.4e Диапазоны для IBM PC-совместимых

©ρŧą42 There are four signed integer types: signed char, short int, int, and long int. In this list, each type provides at least as much storage as those preceding it in the list. Plain ints have the natural size suggested by the architecture of the execution environment. For each of the signed integer types, there exists a corresponding (but different) unsigned integer type: unsigned char, unsigned short int, unsigned int, and unsigned long int, each of which occupies the same amount of storage and has the same alignment requirements. There are three floating point types: float, double, and long double. The type double provides at least as much precision as float, and the type long double provides at least as much precision as double.

©ρŧą43 Диапазоны типов по стандарту sizeof(float) sizeof(double) sizeof(long double) sizeof(char) sizeof(short) sizeof(int) sizeof(long) Минимальные и максимальные значения определены в файлах: - целые - вещественные

©ρŧą44 Явное задание типа констант 0X22UL 05Lu 2E+6L 1.82f LVasia

©ρŧą45 [класс памяти] [const] тип имя [инициализатор]; инициализатор : = значение или ( значение ) short int a = 1; const char C = 'C'; char s, sf = 'f'; char t (54); float c = 0.22, x(3), sum; Примеры описаний: Описание идентификаторов

©ρŧą46 Каждый идентификатор имеет область действия (potential scope) и область видимости (scope), которые, как правило, совпадают (кроме случая описания такого же имени во вложенном блоке). Область видимости начинается в точке описания. const int i = 2; { int i[i]; } Имя, описанное внутри блока, локально по отношению к этому блоку. Имя, описанное вне любого блока, имеет глобальную область видимости. Область действия и класс памяти зависят не только от собственно описания, но и от места его размещения в тексте программы. Область видимости

©ρŧą47 auto автоматическая переменная. Память выделяется в стеке и при необходимости инициализируется каждый раз при выполнении оператора, содержащего ее определение. Освобождение памяти - при выходе из блока extern переменная определяется в другом месте программы. static статическая переменная. Время жизни постоянное. Инициализируется один раз при первом выполнении оператора, содержащего определение переменной. В зависимости от расположения оператора описания статические переменные могут быть глобальными и локальными. register аналогично auto, но память выделяется по возможности в регистрах процессора. Класс памяти

©ρŧą48 int a;// 1 main(){ int b;// 2 extern int x;// 3 static int c;// 4 a = 1;// 5 int a;// 6 a = 2;// 7 ::a = 3;// 8 } int x = 4; // 9 Область видимости. Пример 1

©ρŧą49 int a; // глобальная переменная int main(){ int b; // локальная переменная static int c = 1; // локальная статическая переменная } ГлобальнаяЛокальнаяСтатическая Размещениес-т данныхс-т стекас-т данных Время жизнився прогр.блоквся прогр. Область видимостифайлблок Обнулениеданетда Область видимости. Пример 2

©ρŧą50 блок файл функция прототип функции класс поименованная область Области действия

©ρŧą51 В каждой области действия различают пространства имен, в пределах которых идентификатор должен быть уникальным. В разных категориях имена могут совпадать, например: struct Node{ int Node; int i; }Node; В С++ определено четыре раздельных класса идентификаторов, в пределах которых имя должно быть уникальным: 1. имена переменных, функций, типов typedef и констант перечислений; 2. имена типов перечислений, структур, классов и объединений; 3. элементы каждой структуры, класса и объединения; 4. метки. Пространства имен