- •Информатика
- •Тверь-2008
- •15 Сентября 2008 г., протокол n1
- •Содержание
- •Глава 1. Языки программирования (яп)…………………………………..8
- •Глава 2. Основы алгоритмизации……………………………………………24
- •Глава 3. Язык и система программирования
- •Глава 4. Объектно-ориентированное программирование (ооп)……….56
- •Глава 5. Лабораторные работы и практические задания ………………..68
- •Введение
- •Глава 5 содержит перечень лабораторных работ (8) по этим темам, а также список индивидуальных заданий для самостоятельного выполнения студентами по желанию или рекомендации преподавателя.
- •Глава 1. Языки программирования (яп)
- •1.1. Эволюция яп (поколения яп)
- •1.2. Элементы яп
- •1.3. Способы описания яп
- •1.4. Типы данных
- •1.5. Краткие сведения о некоторых яп
- •1.5.1. Бейсик (Basic)
- •1.5.2. Паскаль (Pascal)
- •1.6. Системы программирования
- •Глава 2. Основы алгоритмизации
- •2.1. Понятие алгоритма
- •2.2. Свойства алгоритма
- •2.3. Основные этапы решения задачи с помощью эвм
- •2.4. Способы записи алгоритмов
- •2.5. Основные элементы блок-схемы
- •2.6. Типовые структуры алгоритмов
- •2.7. Стандартные алгоритмы
- •2.7.1. Алгоритм накопления суммы (произведения)
- •2.7.2. Алгоритм поиска максимального (минимального) элемента
- •2.7.3. Алгоритмы сортировки
- •2.7.3.1. Метод выбора
- •2.7.3.2. Пузырьковая сортировка
- •Глава 3. Язык и система программирования
- •3.1. Общая характеристика языка и системы программирования vba
- •3.2. Типы данных в языке vba
- •Описание переменных и идентификаторы типов данных
- •3.3. Арифметические и логические выражения
- •3.4 Основные операторы языка vba
- •1. Оператор присваивания.
- •2. Условный оператор.
- •3. Оператор цикла с заданным числом повторений.
- •4. Оператор цикла с незаданным числом повторений.
- •3.5. Разбиение строки программы, несколько операторов в одной строке, задание комментариев в тексте программы
- •3.6. Типы процедур
- •Глава 4. Объектно-ориентированное программирование (ооп)
- •4.1. Структурное программирование и ооп
- •4.2. Понятие программного объекта
- •4.3. Наследование, инкапсуляция и полиморфизм
- •4.4. Понятие класса объектов
- •4.5. Типы программных компонентов
- •Глава 5. Лабораторные работы и практические задания
- •2) По заданным значениям сторон а, в, с найти площадь треугольника по формуле Герона , где р – полупериметр треугольника. (Без проверки условия на существование треугольника.)
- •Лабораторная работа n2 Создание функций пользователя с разветвляющейся структурой алгоритма
- •Практическое задание
- •Лабораторная работа n3 Создание функций пользователя с циклической структурой алгоритма и накоплением суммы (произведения)
- •Практическое задание
- •Лабораторная работа n4 Создание функций пользователя с циклической структурой алгоритма и поиском максимума (минимума)
- •Практическое задание
- •Лабораторная работа n5 Автоматическая запись программы с помощью макрорекодера
- •Практическое задание.
- •Лабораторная работа n6 Создание оконных форм пользователя
- •Практическое задание.
- •Самостоятельное задание к лабораторной работе n6
- •Лабораторная работа n7 Вычисления по разным сценариям
- •Практическое задание.
- •Лабораторная работа n8 Сортировка элементов массива
- •Самостоятельное задание к лабораторной работе n8
- •Список индивидуальных заданий для самостоятельного выполнения
- •Список рекомендуемой литературы
Глава 4. Объектно-ориентированное программирование (ооп)
4.1. Структурное программирование и ооп
Одной из первых и наиболее широко применяемых технологий программирования стало структурное программирование. Структурный подход к программированию был впервые предложен в начале 70-х годов XX века фирмой IBM. Его появление было связано с распространением ЭВМ III-го поколения и развитием алгоритмических языков высокого уровня (III-го поколения).
До этого (при программировании на ЭВМ I-го и II-го поколений, размер оперативной памяти которых был значительно ограничен, а машинное время очень дорого) использовался операциональный подход, которому был присущ целый ряд недостатков: запутанность логики программы, ее непонятность другим пользователям (кроме авторов программы) и недостаточная надежность. Эти недостатки, а также машинная зависимость ЯП I-го и II-го поколений, не позволяли перейти к массовому промышленному созданию программного обеспечения. Это и подтолкнуло ведущие фирмы к разработке новых методологий программирования, наиболее удачной из которых на тот момент стала идея структурного программирования.
Метод структурного программирования до сих пор не потерял своего значения для определенного класса задач. Он базируется на двух основополагающих принципах: 1) использование процедурного стиля программирования, 2) последовательная декомпозиция алгоритма задачи сверху вниз (нисходящее проектирование).
Согласно структурному подходу задача изначально формулируется в терминах ввода данных – вывода результата: на вход программы подаются исходные данные, программа работает (обрабатывает данные) и выдает результат (рис. 14). После этого начинается последовательное разложение (декомпозиция) всей задачи на отдельные более простые действия. При этом на любом этапе декомпозиции программу можно проверить с помощью специальных «заглушек» – процедур, имитирующих вход и/или выход процедур нижнего уровня. «Заглушки» позволяют проверить логику верхнего уровня алгоритма до реализации следующего уровня. Таким образом, на каждом шаге разработки можно иметь работающий «каркас» программы, который постепенно обрастает деталями.
Рис.14. Схема верхнего уровня структурного подхода
Для структурного программирования также характерны следующие черты:
1) алгоритм любой программы выражается комбинацией трех базовых структур – линейной, разветвляющейся и циклической (см. пункт 2.6 в Главе 2),
2) любой блок кроме условного имеет только один вход и один выход, а блок проверки условия – один вход и два выхода;
3) избегается использование безусловного перехода из одной точки программы в другую (т.е. оператора GOTO);
4) программа имеет модульную структуру, т.е. состоит из модулей (модуль – последовательность логически связанных операций, оформленная как отдельная часть программы и решающая некоторую функциональную задачу).
Модульная структура имеет ряд явных преимуществ по сравнению с монолитной структурой программы при разработке больших проектов:
1) позволяет создавать программу одновременно нескольким программистам (каждый будет разрабатывать свой (свои) модуль (модули));
2) облегчает проектирование и последующие модификации программы;
3) упрощает отладку программы, т.е. поиск и устранение программных ошибок;
4) позволяет использовать готовые библиотеки модулей.
Однако, несмотря на все достоинства структурного программирования, настал момент, когда использование только структурного (процедурного) подхода в программировании исчерпало себя. Поэтому стали появляться различные новые непроцедурные методологии программирования, одной из которых и является объектно-ориентированное программирование (ООП).
ООП родилось и получило широкое распространение благодаря попыткам разрешения проблем, возникавшим при проектировании и разработке сложных программных комплексов. Основными из этих проблем являлись следующие:
1. Развитие языков и методов программирования не успевало за все более растущими потребностями в прикладных программах. Единственным способом снижения времени разработки при структурном подходе был метод многократного использования уже разработанного ПО, т.е. проектирование новой программы на базе ранее разработанных программных модулей (что не всегда было удобно).
2. Ускорение разработки нового ПО требовало упрощения их сопровождения и модификации.
3. Не все задачи поддаются алгоритмическому описанию по требованиям структурного программирования, поэтому для упрощения процесса проектирования требовалось приблизить структуру программы к структуре решаемой задачи (что не всегда возможно при процедурном подходе).
Решение перечисленных проблем в рамках создания ООП и породило три его основных достоинства: упрощение процесса проектирования программ (даже сложных), облегчение процесса их сопровождения и модификации, минимизация времени разработки за счет использования готовых модулей.
