1.
5.1. Этапы решения задач на компьютерах
5.2. Структурное программирование.
Модульный принцип программирования.
Подпрограммы. Принципы проектирования
программ сверху-вниз и снизу-вверх
5.3. Объектно-ориентированное
программирование
2. Технологическая цепочка решения задач на
компьютере:
1.
2.
3.
4.
5.
6.
Постановка задачи.
Моделирование (математическая формализация).
Построение алгоритма.
Программирование.
Отладка и тестирование программы.
Анализ результатов. Уточнение модели.
3. включает в себя следующие моменты:
сбор информации о задаче;
формулировку условия задачи;
определение конечных целей решения задачи;
определение формы выдачи результатов;
описание данных (их типов, диапазонов
величин, структуры и т. п.).
5.
выделить предположения, на которых будет
основываться математическая модель;
определить, что считать исходными данными
и результатами;
записать математические соотношения,
связывающие результаты с исходными
данными
6.
выбор метода проектирования алгоритма;
выбор формы записи алгоритма (блок-схемы,
псевдокод и др.);
выбор тестов и метода тестирования;
проектирование алгоритма.
9.
Анализ результатов решения задачи и
уточнение в случае необходимости
математической модели с повторным
выполнением этапов 2-5.
10.
доработка программы для решения
конкретных задач;
составление документации к решенной
задаче, к математической модели, к
алгоритму, к программе, к набору тестов, к
использованию.
12. А лгоритм – это упорядоченная совокупность
точных (формализованных) и полных команд
исполнителю алгоритма (человек, ЭВМ),
задающих порядок и содержание действий,
которые он должен выполнить для нахождения
решения любой задачи из рассматриваемого
класса задач.
13.
Конечность (дискретность) команд и выполняемых по ним действий
алгоритма.
Выполнимость в определенной операционной среде (в определенном
классе исполнителей).
Результативность отдельных команд и всего алгоритма.
Применимость алгоритма ко всем возможным входным данным
конкретного класса задач.
Определенность (детерминированность) команд и всего алгоритма для
всех входных данных.
Формализованное, конструктивное описание (представление) команд
алгоритма.
Минимальная полнота системы команд алгоритм.
Непротиворечивость любых команд алгоритма на любом наборе входных
данных.
15. Структура следование состоит из двух команд
с указанной очередностью их выполнения и
имеет вид:
<команда – предшественник>;
<команда – преемник>.
16.
Структура типа ветвления в полной форме состоит
из некоторого условия, проверяемого на истинность
при выполнении структуры, команды, выполняемой
при выполнении проверяемого условия, и команды,
выполняемой при невыполнении условия. Структура
имеет вид:
if <условие>
then <команда, выполняемая при выполнении
условия>
else <команда, выполняемая при невыполнении
условия>;.
18.
Структура повторения (цикл) служит для
компактной записи одного и того же набора
команд, повторяемых для различных
значений параметров команд.
19. while <условие продолжения повторения> do
<повторяемая команда>;
или
while <условие продолжения повторения> do
begin
<повторяемая команда номер 1>;
<повторяемая команда номер 2>;
. . .
<повторяемая команда номер N>
end;.
20. for <переменная> := <начальное значение
переменной> to <конечное ее значение> do
<команда>;
или
for <переменная> := <начальное значение
переменной> to <конечное ее значение> do
begin
<повторяемая команда номер 1>;
<повторяемая команда номер 2>;
. . .
<повторяемая команда номер N>
end;.
23.
проектированием алгоритмов "сверху вниз"
или методом последовательной (пошаговой)
нисходящей разработки алгоритмов
называется такой метод составления
алгоритмов, когда исходная задача (алгоритм)
разбивается на ряд вспомогательных
подзадач (подалгоритмов), формулируемых и
решаемых в терминах более простых и
элементарных операций (процедур).
24.
опираясь на некоторый, заранее
определяемый корректный набор
подалгоритмов, строят функционально
завершенные подзадачи более общего
назначения, от них переходит к более общим,
и так далее, до тех пор, пока не дойдем до
уровня, на котором можно записать решение
поставленной задачи.
25.
это принципы формирования алгоритмов из
базовых структурных алгоритмических
единиц (следование, ветвление, повторение),
используя их последовательное соединение
или вложение друг в друга с соблюдением
определённых правил, гарантирующих
читабельность и исполняемость алгоритма
сверху вниз и последовательно.
26.
это алгоритм, представленный как
следования и вложения базовых
алгоритмических структур. У
структурированного алгоритма статическое
состояние (до актуализации алгоритма) и
динамическое состояние (после
актуализации) имеют одинаковую логическую
структуру, которая прослеживается сверху
вниз ("как читается, так и исполняется").
27.
Любой алгоритм может быть
эквивалентно представлен
структ урированным
алгоритмом, состоящим из
базовых алгоритмических
структ ур.
28.
Модуль – это некоторый алгоритм
или некоторый его блок, имеющий
конкретное наименование, по
которому его можно выделить и
актуализировать.
30. 5.2. СТРУКТУРНОЕ
ПРОГРАММИРОВАНИЕ
Цели и задачи структурного
программирования:
Суть структурного программирования состоит в
ряде ограничений и правил
программирования, которые обеспечивают
соответствие программы очень строгому
образцу, исключая тем самым бессистемность,
не удобочитаемость и запутанность, которые
порождают ошибки и затрудняют тестирование
и сопровождение.
31. 5.2. СТРУКТУРНОЕ
ПРОГРАММИРОВАНИЕ
Цели и задачи структурного
программирования:
• Уменьшение трудностей тестирования
• Более высокая производительность
программистов
• Ясность и читабельность программ
• Эффективность
32. ТЕОРИЯ И МЕТОДЫ СТРУКТУРНОГО
ПРОГРАММИРОВАНИЯ
Три основных составляющих блока:
1.Функциональный блок.
2.Конструкция обобщенного цикла.
3.Конструкция принятия двоичного, или
дихотомического, решения.
33. РЕАЛИЗАЦИЯ СТРУКТУРНОГО
ПРОГРАММИРОВАНИЯ
все операции в программе должны представлять собой либо
непосредственно исполняемые в линейном порядке выражения
(например, обычные арифметические операторы), либо одну из
следующих трех управляющих конструкций:
1.Вызовы процедур, подпрограмм и функций—любое допустимое
обращение к замкнутой подпрограмме с одним входом и одним
выходом. Заметим, что подпрограммы не являются абсолютно
необходимым условием возможности реализации структурного
программирования.
2.Вложенные на произвольную глубину операторы IF-THEN-ELSE.
3.Некоторые циклические структуры. Чаще всего в таком качестве
используются конструкции DO-LOOP.
35. МОДУЛЬ ХАРАКТЕРИЗУЮТ:
•
•
•
•
один вход и один выход
функциональная завершенность
логическая независимость
слабые информационные связи с
другими программными модулями
• обозримый по размеру и сложности
программный элемент
36. ДОВОДЫ В ПОЛЬЗУ МОДУЛЬНОСТИ
•
•
•
Модульные программы легко составлять и отлаживать.
Функциональные компоненты такой программы могут
быть написаны и отлажены порознь.
Модульную программу легче сопровождать и
модифицировать. Функциональные компоненты могут быть
изменены, переписаны или заменены без изменений в
остальных частях.
Руководству легче управлять разработкой модульной
программы. Более сложные модули могут быть переданы
более опытным программистам; простые модули могут
быть написаны младшими программистами. Разбивая
программу на модули, которые могут быть созданы за;
один месяц, руководитель может быть уверен, что ни один
из программистов не окажется слишком перегруженным
сложными элементами программы.
37. ДОВОДЫ В ПОЛЬЗУ МОДУЛЬНОСТИ
•
•
•
Модульные программы легко составлять и отлаживать.
Функциональные компоненты такой программы могут
быть написаны и отлажены порознь.
Модульную программу легче сопровождать и
модифицировать. Функциональные компоненты могут быть
изменены, переписаны или заменены без изменений в
остальных частях.
Руководству легче управлять разработкой модульной
программы. Более сложные модули могут быть переданы
более опытным программистам; простые модули могут
быть написаны младшими программистами. Разбивая
программу на модули, которые могут быть созданы за;
один месяц, руководитель может быть уверен, что ни один
из программистов не окажется слишком перегруженным
сложными элементами программы.
39.
это тип, описывающий устройство
объектов. Понятие «класс»
подразумевает некоторое
поведение и способ представления.
40.
сущность в адресном пространстве
вычислительной системы,
появляющаяся при создании
экземпляра класса (например, после
запуска результатов компиляции (и
связывания) исходного кода на
выполнение).
41.
Первым языком программирования, в котором
были предложены принципы объектной
ориентированности, была Симула. В момент своего
появления (в 1967 году), этот язык
программирования предложил поистине
революционные идеи: объекты, классы,
виртуальные методы и др., однако это всё не было
воспринято современниками как нечто
грандиозное. Тем не менее, большинство
концепций были развиты Аланом Кэйем и Дэном
Ингаллсом в языке Smalltalk. Именно он стал
первым широко распространённым объектноориентированным языком программирования.
43.
это способ выделить набор значимых
характеристик объекта, исключая из
рассмотрения незначимые. Соответственно,
абстракция – это набор всех таких
характеристик.
44.
это свойство системы, позволяющее
объединить данные и методы, работающие с
ними, в классе и скрыть детали реализации от
пользователя.
45.
это свойство системы, позволяющее описать
новый класс на основе уже существующего с
частично или полностью заимствующейся
функциональностью. Класс, от которого
производится наследование, называется
базовым или родительским. Новый класс –
потомком, наследником или производным
классом.
46.
это свойство системы использовать объекты с
одинаковым интерфейсом без информации о
типе и внутренней структуре объекта.
47.
Роджер Кинг аргументированно настаивал,
что его кот является объектноориентированным. Кроме прочих своих
достоинств, кот демонстрирует характерное
поведение, реагирует на сообщения,
наделён унаследованными реакциями и
управляет своим, вполне независимым,
внутренним состоянием.
48.
По мнению Алана Кея, создателя языка
Smalltalk, которого считают одним из «отцовоснователей» ООП, объектноориентированный подход заключается в
следующем наборе основных принципов
49.
Всё является объектом
Вычисления осуществляются путём
взаимодействия (обмена данными) между
объектами, при котором один объект требует,
чтобы другой объект выполнил некоторое
действие.
Объекты взаимодействуют, посылая и
получая сообщения.
50.
Сообщение — это запрос на выполнение
действия, дополненный набором аргументов,
которые могут понадобиться при выполнении
действия.
Каждый объект имеет независимую память,
которая состоит из других объектов.
Каждый объект является представителем
(экземпляром) класса, который выражает
общие свойства объектов. В классе задаётся
поведение (функциональность) объекта.
51.
Тем самым все объекты, которые являются
экземплярами одного класса, могут
выполнять одни и те же действия.
Классы организованы в единую древовидную
структуру с общим корнем, называемую
иерархией наследования.
Память и поведение, связанное с
экземплярами определённого класса,
автоматически доступны любому классу,
расположенному ниже в иерархическом
дереве.
52.
Таким образом, программа представляет
собой набор объектов, имеющих состояние и
поведение.
Объекты взаимодействуют посредством
сообщений.
53.
Естественным образом выстраивается
иерархия объектов: программа в целом — это
объект, для выполнения своих функций она
обращается к входящим в неё объектам,
которые, в свою очередь, выполняют
запрошенное путём обращения к другим
объектам программы.
54.
Естественно, чтобы избежать бесконечной
рекурсии в обращениях, на каком-то этапе
объект трансформирует обращённое к нему
сообщение в сообщения к стандартным
системным объектам, предоставляемым
языком и средой программирования.
55.
Устойчивость и управляемость системы
обеспечивается за счёт чёткого разделения
ответственности объектов (за каждое
действие отвечает определённый объект),
однозначного определения интерфейсов
межобъектного взаимодействия и полной
изолированности внутренней структуры
объекта от внешней среды (инкапсуляции).
56.
Класс в ООП — это в чистом виде абстрактный
тип данных, создаваемый программистом. С
этой точки зрения объекты являются
значениями данного абстрактного типа, а
определение класса задаёт внутреннюю
структуру значений и набор операций,
которые над этими значениями могут быть
выполнены.
57.
Класс представляет собой объявленный
программистом составной тип данных,
имеющий в составе:
Поля данных
Методы
Взаимодействие объектов в абсолютном
большинстве случаев обеспечивается
вызовом ими методов друг друга.
60.
Поля обычно объявляются скрытыми, а для
доступа к находящимся в полях данным
используются специальные методы,
называемые методами доступа.
61.
Свойства можно рассматривать как «умные»
поля данных, сопровождающие доступ к
внутренним данным объекта какими-либо
дополнительными действиями
например, когда изменение координаты
объекта сопровождается его перерисовкой
на новом месте
62.
Полиморфизм реализуется путём введения в
язык правил, согласно которым переменной
типа «класс» может быть присвоен объект
любого класса-потомка её класса.
63. Объектно-ориентированное проектирование
состоит в описании структуры и поведения
проектируемой системы, то есть, фактически, в
ответе на два основных вопроса:
Из каких частей состоит система.
В чём состоит ответственность каждой из
частей.