Скачать презентацию Основы программирования Павловская Татьяна Александровна профессор кафедры информатики Скачать презентацию Основы программирования Павловская Татьяна Александровна профессор кафедры информатики

94db76341816145e935c5754bf1fa02d.ppt

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

Основы программирования Павловская Татьяна Александровна профессор кафедры информатики и прикладной математики (ауд. 378, тел. Основы программирования Павловская Татьяна Александровна профессор кафедры информатики и прикладной математики (ауд. 378, тел. : (812)233 -4690) e-mail: pta-ipm@yandex. ru Материалы на сайте: http: //pta-ipm. narod. ru

Задача курса - обучение основам создания коммерческих программных продуктов: n разработка эффективных алгоритмов n Задача курса - обучение основам создания коммерческих программных продуктов: n разработка эффективных алгоритмов n выбор наиболее подходящих языковых средств n выбор оптимальных или близких к ним структур данных n профессиональное кодирование и тестирование n основы технологий разработки ПО Т. А. Павловская (СПб. ГУ ИТМО) 2

Содержание курса n Парадигмы программирования n Типы данных и управляющие конструкции языка высокого уровня Содержание курса n Парадигмы программирования n Типы данных и управляющие конструкции языка высокого уровня n Структуры данных n n массивы, стеки, очереди, списки, деревья Объектно-ориентированное программирование n теория ООП n основы программирования под Windows n библиотеки классов Т. А. Павловская (СПб. ГУ ИТМО) 3

Программист должен обладать способностью первоклассного математика к абстракции и логическому мышлению в сочетании с Программист должен обладать способностью первоклассного математика к абстракции и логическому мышлению в сочетании с эдисоновским талантом сооружать всё, что угодно, из нуля и единиц. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективных романов с трезвой практичностью экономиста, сочетать в себе лёгкость и полет таланта Моцарта с усидчивостью и скрупулёзностью Сальери. Академик Андрей Петрович Ершов Т. А. Павловская (СПб. ГУ ИТМО) 4

TIOBE Programming Community Index for August 2011 indicator of the popularity of programming languages. TIOBE Programming Community Index for August 2011 indicator of the popularity of programming languages. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, Bing, Yahoo!, Wikipedia, You. Tube and Baidu are used to calculate the www. tiobe. com ratings. Position Aug 2011 1 Position Aug 2010 1 Ratings Aug 2011 19. 4% Delta Aug 2010 +1. 4% 2 2 C 17. 4% -0. 5% 3 3 C++ 8. 4% -1. 2% 4 4 PHP 6. 1% -3% 5 6 C# 6% +1% 6 9 Objective-C 5. 5% +2. 3% 7 5 (Visual) Basic 5% -0. 4% 8 7 Python 2. 3% -0. 80% 9 8 Perl 2. 3% -1. 1% 10 11 Java. Script 1. 5% -0. 8% 11 23 Lua 1. 3% +0. 8% 12 12 Ruby 1. 3% -0. 6% Т. А. Павловская (СПб. ГУ ИТМО) Programming Language Java 5

Т. А. Павловская (СПб. ГУ ИТМО) 6 Т. А. Павловская (СПб. ГУ ИТМО) 6

Парадигмы (категории языков) Category Ratings Aug 2011 Delta Aug 2010 Object-Oriented Languages 55. 3% Парадигмы (категории языков) Category Ratings Aug 2011 Delta Aug 2010 Object-Oriented Languages 55. 3% +1. 2% Procedural Languages 38. 2% -2. 9% Functional Languages 4. 9% +1. 6% Logical Languages 1. 6% +0. 1% Т. А. Павловская (СПб. ГУ ИТМО) 7

Виды учебной нагрузки 1. 2. 3. 4. 5. 6. Лекции n Модули I-II (осень) Виды учебной нагрузки 1. 2. 3. 4. 5. 6. Лекции n Модули I-II (осень) - 1 пара по чет, 2 пары по нечет. n Модули III-IV (весна) - 1 пара 1 раз в 2 недели Лаб. работы - 1 пара 1 раз в неделю Самостоятельная работа - круглосуточно Тестирование в ЦДО – 1 в каждом модуле (ауд. 101) Рубежный контроль – 1 в каждом модуле (= защита лаб. работ) Экзамены (1 осень, 1 весна = тестирование + решение задачи, письменно, ручкой на бумаге) Т. А. Павловская (СПб. ГУ ИТМО) 8

БАРС: расчет рейтинга для модуля 1 (9 недель) баллы Вид учебной нагрузки min max БАРС: расчет рейтинга для модуля 1 (9 недель) баллы Вид учебной нагрузки min max 9 (3 * 3 шт) 15 (5 * 3 шт) Рубежный контроль (защита лаб. работ) 6 10 Тестирование в ЦДО 7 12 Личностные качества 3 5 Итог 25 42 Вып. лаб. работ (3 штуки) Т. А. Павловская (СПб. ГУ ИТМО) 9

 МОДУЛЬ 1 МОДУЛЬ 2 Текущий контроль по точкам 1 2 3 Текущий контроль МОДУЛЬ 1 МОДУЛЬ 2 Текущий контроль по точкам 1 2 3 Текущий контроль по точкам Рубежный контроль 4 1 2 3 Промежут очная Рубежный аттестаци контроль я 4 [min] max [min] max [min] max Лабораторн ые работы 3 5 3 5 3 5 Аттестующи й тест 7 12 5 8 Рубежное тестировани е 6 10 Экзамен 12 20 Личностные качества 3 5 Итого: 25 42 Т. А. Павловская (СПб. ГУ ИТМО) 60 10

Темы лабораторных работ 1. Линейные программы (вычисления по двум формулам) n n n n Темы лабораторных работ 1. Линейные программы (вычисления по двум формулам) n n n n 2. 3. Константы Типы данных Переменные Операции Выражения Исключительные ситуации Простейший ввод-вывод Разветвляющиеся программы (2 задания) Циклические программы (3 задания) Т. А. Павловская (СПб. ГУ ИТМО) 11

Художественная литература по программированию (must read) n Брукс Ф. Мифический человеко-месяц, или как создаются Художественная литература по программированию (must read) n Брукс Ф. Мифический человеко-месяц, или как создаются программные комплексы. n Макконнелл С. Совершенный код. n Спольски Дж. Джоэл о программировании (www. joelonsoftware. com). Т. А. Павловская (СПб. ГУ ИТМО) 12

 «Программист, подобно поэту, работает почти непосредственно с чистой мыслью. Он строит свои замки «Программист, подобно поэту, работает почти непосредственно с чистой мыслью. Он строит свои замки в воздухе и из воздуха, творя силой воображения. <. . . > Однако программная конструкция, в отличие от поэтических творений, реальна, в том смысле, что она движется и работает, производя видимые результаты, которые отделимы от самой конструкции. Она печатает результаты, рисует картинки, производит звуки, приводит в движение рычаги. В наше время осуществилось волшебство мифа и легенды. С клавиатуры вводится верное заклинание, и экран монитора оживает, показывая то, чего никогда не было и не могло быть» . Т. А. Павловская (СПб. ГУ ИТМО) Ф. Брукс 13

"Чтобы стать специалистом, настоящим экспертом лишь в одной области программирования, нужны годы. Конечно, есть масса толковых подростков, которые за неделю осваивают Delphi, еще за неделю Python, еще за неделю Perl, после чего они считают себя знатоками. При этом у них нет даже самого отдаленного представления о том, сколь многого они не знают. " "… изучить 90% необходимого в работе материала можно за неделю. Но на освоение оставшихся 10% может уйти пара лет. Вот тут-то и проявляется во всем блеске превосходство действительно опытных программистов над теми, кто говорит, что если он чего-то не знает, то возьмет книжку и прочтет". Дж. Спольски Т. А. Павловская (СПб. ГУ ИТМО) 14

Общеобразовательная литература n Вирт Н. Алгоритмы + структуры данных = программы n Кнут Д. Общеобразовательная литература n Вирт Н. Алгоритмы + структуры данных = программы n Кнут Д. Искусство программирования, том 1. Основные алгоритмы, 3 -е изд. – М. : Издательский дом "Вильямс", 2000. n Кнут Д. Искусство программирования, том 3. Сортировка и поиск, 2 -е изд. – М. : Издательский дом "Вильямс", 2000. n Кормен Т. , Лейзерсон Ч. , Ривест Р. Алгоритмы: построение и анализ. – М. : МЦНМО, 1999. n Фаулер М. Рефакторинг: улучшение существующего кода. СПб: Символ-Плюс, 2007. 432 с. Т. А. Павловская (СПб. ГУ ИТМО) 15

Литература - моя 1. Павловская Т. А. C#. Программирование на языке высокого уровня. Учебник Литература - моя 1. Павловская Т. А. C#. Программирование на языке высокого уровня. Учебник — СПб. : ПИТЕР, 2010. — 432 с. 2. Павловская Т. А. «Основы языка С#. Учебнометодическое пособие» — РИО СПб. ГУИТМО, 2008. 3. Павловская Т. А. «Программирование на языке С#. Методические рекомендации по лабораторному практикуму» — РИО СПб. ГУИТМО, 2008. 4. Павловская Т. А. «Программирование на языке С#. Методические рекомендации по выполнению самостоятельной работы студентов» — РИО СПб. ГУИТМО, 2008. Т. А. Павловская (СПб. ГУ ИТМО) 16

Литература 1. Стандарт языка: http: //www. ecmainternational. org/publications/standards/Ecma-334. htm 2. Троелсен Э. C# и Литература 1. Стандарт языка: http: //www. ecmainternational. org/publications/standards/Ecma-334. htm 2. Троелсен Э. C# и платформа. NET. Библиотека программиста. — СПб. : Питер, 2008. — 796 с. 3. Нэш Т. C# 2008: ускоренный курс для профессионалов. — М. : «Вильямс» , 2008. — 576 с. 4. Мартин Р. , Мартин М. Принципы, паттерны и методики гибкой разработки на языке C#. — М. : «Символ+» , 2011. — 768 с. 5. Нейгел К. , Ивьен Б. , Глинн Д. , Уотсон К. , Скиннер М. C# 2008 и платформа. NET 3. 5 для профессионалов (или: C# 2005 и платформа. NET 3. 0 для профессионалов) — М. : «Вильямс» , 2008. — 1376+416 (на CD) с. 6. Любые другие книги с символами "С#" на обложке! ------Скачать Microsoft Visual С# Express 2005: http: //www. softtime. ru/cpp_info/vs_net. php * первая ссылка в Яндексе по словам «Microsoft Visual С#Express» даст С# Express 2010 Т. А. Павловская (СПб. ГУ ИТМО) 17

Электронные источники n http: //pta-ipm. narod. ru — презентации лекций, текущие объявления n http: Электронные источники n http: //pta-ipm. narod. ru — презентации лекций, текущие объявления n http: //de. ifmo. ru — электронные тесты, программа курса n http: //www. intuit. ru/department/pl/phlcsharp/ — учебный курс (по моему учебнику) n http: //ips. ifmo. ru — конспекты лекций, автоматическая проверка программ n http: //msdn. microsoft. com/ru-ru/library/ — библиотека MSDN n . . . Т. А. Павловская (СПб. ГУ ИТМО) 18

И еще литература n Эдвард де Боно. Почему мы такие тупые? . — СПб: И еще литература n Эдвард де Боно. Почему мы такие тупые? . — СПб: ПИТЕР, 2009. — 128 с. Т. А. Павловская (СПб. ГУ ИТМО) 19

Анкета 1. Фамилия, имя, номер группы 2. Опыт программирования (языки, уровень, стаж, достижения) 3. Анкета 1. Фамилия, имя, номер группы 2. Опыт программирования (языки, уровень, стаж, достижения) 3. Есть ли у Вас возможность работать на компьютере вне вуза? 4. Есть ли у Вас возможность приносить на занятия ноутбук? 5. Напишите программу, соответствующую приведенной схеме алгоритма, на любом языке программирования. Все переменные – вещественные, блоки в программе не дублировать. 6. Если у Вас есть ко мне вопросы, можно их задать. Ввод x, y Т. А. Павловская (СПб. ГУ ИТМО) z=0 0, 11 x=0, 099 или y<5 нет Вывод z 20

n Лекция окончена! Т. А. Павловская (СПб. ГУ ИТМО) 21 n Лекция окончена! Т. А. Павловская (СПб. ГУ ИТМО) 21

Основные критерии качества программы § надежность § возможность точно планировать производство и сопровождение Для Основные критерии качества программы § надежность § возможность точно планировать производство и сопровождение Для достижения этих целей программа должна иметь простую структуру, чтобы § быть читабельной § быть легко модифицируемой Т. А. Павловская (СПб. ГУ ИТМО) 22

Характеристики качества ПО Внешние nкорректность Внутренние nудобство сопровождения nпрактичность nтестируемость nэффективность nудобочитаемость nнадежность nгибкость Характеристики качества ПО Внешние nкорректность Внутренние nудобство сопровождения nпрактичность nтестируемость nэффективность nудобочитаемость nнадежность nгибкость nцелостность nадаптируемость nправильность nживучесть Т. А. Павловская (СПб. ГУ ИТМО) nпортируемость nвозможность повторного использования nпонятность 23

Парадигмы программирования Парадигма — способ организации программы, то есть принцип ее построения. Наиболее распространенными Парадигмы программирования Парадигма — способ организации программы, то есть принцип ее построения. Наиболее распространенными являются процедурная и объектно-ориентированная парадигмы. Они различаются способом декомпозиции, положенным в основу при создании программы. Процедурная декомпозиция состоит в том, что задача, реализуемая программой, делится на подзадачи, а они, в свою очередь — на более мелкие этапы, то есть выполняется пошаговая детализация алгоритма решения задачи. Объектно-ориентированная декомпозиция предполагает разбиение предметной области на объекты и реализацию этих объектов и их взаимосвязей в виде программы. Кроме того, существуют функциональная и логическая парадигмы. Т. А. Павловская (СПб. ГУ ИТМО) 24

Платформа. NET Среда разработки Visual Studio. NET для нескольких языков программирования: n n n Платформа. NET Среда разработки Visual Studio. NET для нескольких языков программирования: n n n компилятор; n средства отладки и запуска программ; n общие библиотеки; n справочную систему n n текстовый редактор; и другие элементы. Каркас. NET Framework n библиотека классов n исполняющая система (виртуальная машина) Механизмы поддержки баз данных, электронной почты и коммерции и множество других средств n Т. А. Павловская (СПб. ГУ ИТМО) 25

Структура. NET Платформа. NET Среда разработки приложений Visual Studio. NET Каркас. NET Framework Библиотека Структура. NET Платформа. NET Среда разработки приложений Visual Studio. NET Каркас. NET Framework Библиотека классов каркаса (FCL) Web-сервисы . NET Enterprise Servers Интерфейс пользователя Классы для работы с данными и XML Базовые классы среды . NET Building Block Services Общеязыковая среда выполнения (CLR) Операционная система Аппаратные средства компьютера Т. А. Павловская (СПб. ГУ ИТМО) 26

Первый взгляд на классы n n Понятие класс аналогично обыденному смыслу этого слова в Первый взгляд на классы n n Понятие класс аналогично обыденному смыслу этого слова в контексте «класс членистоногих» , «класс задач» . Класс является обобщенным понятием, определяющим характеристики и поведение некоторого множества конкретных объектов этого класса, называемых экземплярами класса (объектами). n. Класс содержит данные, задающие свойства объектов класса, и функции (методы), определяющие их поведение. Все классы. NET имеют одного общего предка — класс object, и организованы в единую иерархическую структуру. n Классы логически сгруппированы в так называемые пространства имен, которые служат для упорядочивания имен классов и предотвращения их конфликтов: в разных пространствах имена могут совпадать. Пространства имен могут быть вложенными. n Т. А. Павловская (СПб. ГУ ИТМО) 27

Трансляция Компиляция Исходный текст программы Оператор на исходном языке Т. А. Павловская (СПб. ГУ Трансляция Компиляция Исходный текст программы Оператор на исходном языке Т. А. Павловская (СПб. ГУ ИТМО) Интерпретация Компилятор, компоновщик Программа на машинном языке Интерпретатор Команды на машинном языке Выполнение программы Выполнение команд 28

Гибридная схема трансляции Исходный текст программы Компилятор Программа на промежуточном языке Исполняющая система Т. Гибридная схема трансляции Исходный текст программы Компилятор Программа на промежуточном языке Исполняющая система Т. А. Павловская (СПб. ГУ ИТМО) 29

Схема выполнения программы в. NET Сборка (. exe или. DLL) Исходный текст программы Базовые Схема выполнения программы в. NET Сборка (. exe или. DLL) Исходный текст программы Базовые классы среды (IL и метаданные) Компилятор CLR Исполняемый файл (IL и метаданные) Загрузчик классов JIT-компилятор Исполняемый код (маш. команды) Вызовы нескомпилированных методов Выполнение программы Т. А. Павловская (СПб. ГУ ИТМО) 30

Решение Напишите программу, соответствующую приведенной схеме алгоритма, на любом известном Вам языке программирования. Все Решение Напишите программу, соответствующую приведенной схеме алгоритма, на любом известном Вам языке программирования. Все переменные – вещественные, блоки в программе не дублировать. Ввод x, y z=0 var x, x, y, z z : : real; {не работает} var x, y, y, z : real; {тоже не работает} {4} var x, y, z : real; var real; {1} {3} {2} begin readln(x, y); z z : = 0; readln(x, y); : = 0; ifif (0. 11*x = (0. 11*x or 0. 099) (y>=5) )) ifif not ( abs 0. 099) - (y<5) < 1 e-6 not(0. 11*x <> 0. 099) and ( ( (0. 11*x = 0. 099) or (y<5) ) then z : = ) (2 * y); then z : = x x / ( 2 * y); or (y<5) / 0, 11 x=0, 099 или y<5 нет writeln(z); z : = x * (2 * y); writeln(z); x / (2 / y); else then z : = end. writeln(z); end. Вывод z Т. А. Павловская (СПб. ГУ ИТМО) 31