66
Информатика и информационные технологии Лекция 5. Языки и технологии программирования

Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

Информатика иинформационные технологии

Лекция 5.Языки и технологиипрограммирования

Page 2: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

2

Основные этапы решения задач спомощью компьютера:

• Постановка задачи; • Анализ и исследование задачи, модели; • Разработка алгоритма

• Пpогpаммиpование (кодирование наязыке программирования);

• Тестиpование и отладка;• Анализ результатов решения задачи;• Сопровождение программы.

Page 3: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

3

УровниУровни языковязыков программированияпрограммирования

ЕстественныеЕстественные языкиязыкиТерминологияТерминология конкретнойконкретной предметнойпредметной областиобласти

ВысокоуровневыеВысокоуровневые языкиязыки программированияпрограммирования

НизкоуровневыеНизкоуровневые языкиязыки программированияпрограммирования((напрнапр. . CC))

АссемблерАссемблер ((мнемокодымнемокоды))МашинныйМашинный кодкод ((тото, , чточто исполняетисполняет процессорпроцессор))

3

Page 4: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

4

ЯзыкиЯзыки высокоговысокого//низкогонизкого уровняуровня

ЯзыкиЯзыки высокоговысокого уровняуровня –– максимальномаксимальноприближеныприближены кк задачезадаче. . НаиболееНаиболее выраженовыражено ввпредметнопредметно ориентированныхориентированных языкахязыках..

ПриоритетПриоритет ––чточто делатьделать??ЯзыкиЯзыки низкогонизкого уровняуровня –– вв центрецентре вниманиявнимания ненезадачазадача, , аа технологиятехнология еёеё реализацииреализации, , связаннаясвязаннаясс языкомязыком / / машиноймашиной. . ПривлекаютсяПривлекаютсядополнительныедополнительные понятияпонятия, , нене связанныесвязанные ссзадачейзадачей..

ПриоритетПриоритет –– каккак делатьделать??

4

Page 5: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

5

Разнообразие языковпрограммирования

Со времени создания первыхпрограммируемых машин человечествопридумало > 8500 языков программирования. Каждый год их число пополняется новыми. Некоторыми языками умеет пользоватьсятолько небольшое число их собственныхразработчиков, другие становятся известнымиллионам людей. Профессиональные программисты иногдаприменяют в своей работе более десяткаразнообразных языков программирования.

Page 6: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

66

Классификации языковЯзыки программирования

Высокого уровня Низкого уровня:C / C++, Assembler

Общего назначения:Perl, Java, Python

Предметно-ориентированные:Matlab, PL SQL, AutoLisp

Языки программирования

Императивные:C, Pascal, Java, Perl Декларативные

Функциональные языки:LISP, Haskell

Языки логического прогр.:Prolog

МультипарадигменныеRuby

Page 7: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

7

Парадигмы программированияПарадигма — способ организации программы, то есть принципее построения. Наиболее распространенными являютсяпроцедурная и объектно-ориентированная парадигмы. Ониразличаются способом декомпозиции, положенным в основупри создании программы. •Процедурная декомпозиция состоит в том, что задача, реализуемая программой, делится на подзадачи, а они, в своюочередь — на более мелкие этапы, то есть выполняетсяпошаговая детализация алгоритма решения задачи.•Объектно-ориентированная декомпозиция предполагаетразбиение предметной области на объекты и реализацию этихобъектов и их взаимосвязей в виде программы.•Функциональная и логическая парадигмы.

Page 8: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

8

Классификация языковпрограммирования

По стилю (используемая парадигма) или виду организации:• Алгоритмические

– Pascal, C, Fortran, Cobol, Basic• Объектно-ориентированные

– C++, Object Pascal (в среде Delphi), Java, C#• Логические

– Prolog, SmallTalk• Функциональные

– LISPПо виду выполнения программы:• Компилируемые

– Pascal, C, С++, С#, Pascal, Fortran, Cobol, язык Ассемблера• Интерпретируемые

– Basic, Prolog, LISP, Java • Скриптовые

– Javascript, PHP, Python, Perl, Ruby

Page 9: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

9

Есть еще проблемно-ориентированные(специализированные) языки

программирования

• Языки для моделирования• Языки программирования для станков сЧПУ

• Языки программирования роботов• Скриптовые языки в играх и винструментальном ПО для создания игр

• Скриптовые языки дляпрограммирования диалоговых программна естественном языке

Page 10: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

10

TIOBE Programming Community Index for February2009

3.5%JavaScript1010

3.6%Delphi99

4.1%Perl68

4.5%Python77

5%C #86

8.8%PHP45

8.8%(Visual) Basic34

9.6%C++53

15.8%C22

19.4%Java11

RatingsFeb2009

ProgrammingLanguage

PositionFeb 2008

PositionFeb 2009

Page 11: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

11

Алгоритмические компилируемые языки.Алгоритм

Алгоритм – это упорядоченнаясовокупность точных(формализованных) и полных командисполнителю алгоритма (человек, ЭВМ), задающих порядок исодержание действий, которые ондолжен выполнить для нахождениярешения любой задачи израссматриваемого класса задач.

Page 12: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

12

Алгоритмические компилируемые языки.

• Любой алгоритм ориентирован на некоторыйобщий метод решения класса задач и представляетсобой формализованную запись метода, процедуры.

• Алгоритм, записанный на некоторомалгоритмическом, формальном языке, состоит иззаголовка алгоритма (описания параметров, спецификаций класса задач) и тела алгоритма(последовательности команд исполнителя, преобразующих входные параметры в выходные).

• Для записи, исполнения, обмена и храненияалгоритмов существуют различные средства, языки, псевдокоды – блок-схемы, структурограммы(схемы Нэсси-Шнайдермана), Р-схемы, школьныйалгоритмический язык (ШАЯ), различные языкипрограммирования.

Page 13: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

13

Алгоритмические компилируемые языки.Основные свойства алгоритма

• Детерминированность — определённость. В каждый моментвремени следующий шаг работы однозначно определяетсясостоянием системы. Таким образом, алгоритм выдаёт один и тотже результат (ответ) для одних и тех же исходных данных.

• Понятность — алгоритм для исполнителя должен включатьтолько те команды, которые ему (исполнителю) доступны, т.е. которые входят в его систему команд.

• Завершаемость (конечность) — при корректно заданныхисходных данных алгоритм должен завершать работу и выдаватьрезультат за конечное число шагов. С другой стороны, вероятностный алгоритм может и никогда не выдать результат, новероятность этого равна 0.

• Массовость — алгоритм должен быть применим к разнымнаборам исходных данных.

Page 14: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

14

Алгоритмические компилируемые языки.Базовые алгоритмические структуры

Различают три базовые алгоритмические структуры: следование, ветвление, повторение.

• Структура следование состоит из двух команд с указаннойочередностью их выполнения и имеет вид:

<команда – предшественник>;<команда – преемник>.• Структура типа ветвления в полной форме состоит из

некоторого условия, проверяемого на истинность привыполнении структуры, команды, выполняемой при выполнениипроверяемого условия, и команды, выполняемой приневыполнении условия. Структура имеет видif <условие> then <команда, выполняемая при выполненииусловия> else <команда, выполняемая при невыполнении

условия>;. • Структура повторения (цикл) служит для компактной записи

одного и того же набора команд, повторяемых для различныхзначений параметров команд. Телом цикла называетсяпоследовательность повторяемых команд, которая может бытьи пустой.

Page 15: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

15

Алгоритмические компилируемые языки.Примеры базовых алгоритмических структур

Условный оператор if :

if (выражение_условие)оператор_1;elseоператор_2;

Вход ДА НЕТ Выход

Условие истинно?

Действие 1

Действие 2

Page 16: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

16

Алгоритмические компилируемые языки.Примеры базовых алгоритмических структур

Один из операторов цикла –цикл типа while (пока):

while (условие) оператор;Пример: Вычислить АN:…n=7; a=-3;i=1; p=1;while (i<=n)

{p*=a;i++;}

n=7 a=-3 i=1 p=1 нет да i<=n p*=a i++

Page 17: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

17

Ключевые понятия любогоалгоритмического языка

• Синтаксис языка– Как выглядит исходный текст программы

• Семантика языка– Чему соответствует в исполняемой программе то, что написано в исходном

тексте• Переменная:

– Идентификатор (имя переменной)– Тип– Область видимости (локальные, глобальные переменные)

• Присваивание– Значений переменным

• Оператор – синтаксически законченный фрагмент программы, имеющий определенную семантику

• Связывание– Имен переменных и функций с их адресом в виртуальной памяти

• Процедуры и функции (поименованные части программы, которыеможно многократно вызывать в программе)

Page 18: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

18

Пример подготовки программы наалгоритмическом компилируемом

языке СИсходныйтекст на СИ

Включаемыефайлы

Препроцессор

Полныйтекст

программы(единица

трансляции)

Компилятор

Объектныйкод

программы

Стандартныебиблиотеки

Компоновщик Исполняемаяпрограмма

Файл ppppp.exe

Файл ppppp.obj

Файл ppppp.c

Файл xxxxx.h

Связывание

Компиляция илитрансляция

Обработка директив

Page 19: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

19

#include <stdio.h> // включение в текст// файла с функциями// ввода-вывода

/* Пример 1 */void main(void){

int a, b, sum;// описание (определение) переменныхprintf("Введите два числа а и b \n"); scanf("%d%d", &a, &b); // ввод переменныхsum=a+b;printf("a= %d b= %d Сумма= %d \n", a,b,sum);

} // пример вывода: а=10 b=20 Сумма=30

Page 20: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

20

Примерпрограммы на С

#include <stdio.h>

void main(){char st[10], c;int n, i;gets(st);n = sizeof(st);n = 0;while (st[n] != 0) n++;n >> 1;for (i = 0; i<n/2; i++){c = st[i];st[i] = st[n-i-1];st[n-i-1] = c;}puts(st);}

Программа вводит строку склавиатуры,инвертирует ее (переписываетнаоборот) и выводит.

Строка запоминается в строковойпеременной (массиве символьныхпеременных) st и не может превышать9 символов

Обратите внимание на обмензначениями двух элементов массива сиспользованием дополнительнойпеременной c

Page 21: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

21

Объектно-ориентированноепрограммирование (ООП).

Объекты• Объект — понятие, абстракция или любой предмет счетко очерченными границами, имеющий смысл вконтексте рассматриваемой прикладной проблемы.

• Введение объектов преследует две цели:– понимание прикладной задачи (проблемы);– введение основы для реализации на компьютере.

• Примеры объектов: стул, Сбербанк, деталь, станок, дом, уравнение.

Page 22: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

22

Объекты• Каждый объект имеет определенное время жизни. • В процессе выполнения программы, илифункционирования какой-либо реальной системы, могут создаваться новые объекты и уничтожатьсяуже существующие.

• Объект (по Гради Бучу) — это мыслимая илиреальная сущность, обладающая характернымповедением и отличительными характеристиками иявляющаяся важной в предметной области.

• Каждый объект имеет состояние, обладает четкоопределенным поведением и уникальнойидентичностью.

Page 23: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

23

Состояние• Пример: студент сидит, затем прыгает и в то жевремя выполняет другие действия.

• Состояние объекта может определяться наличиемили отсутствием связей между моделируемымобъектом и другими объектами.

• Пример: студент и велосипед.• Для рассмотренных примеров атрибутами объекта

«Студент» являются:– текущее положение человека (сидит, прыгает);– наличие велосипеда (есть или нет).

Page 24: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

24

Состояние

• Состояние — совокупный результатповедения объекта: одно из стабильныхусловий, в которых объект можетсуществовать, охарактеризованныхколичественно; в любой моментвремени состояние объекта включает всебя перечень (обычно статический) свойств объекта и текущие значения(обычно динамические) этих свойств.

Page 25: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

25

Поведение• Для каждого объекта существует определенныйнабор действий, которые с ним можно произвести.

• Пример: операции с файлом.• Результат выполнения действий зависит отсостояния объекта на момент совершения действия, т.е. нельзя, например, удалить файл, если он открыткем-либо (заблокирован).

• В то же время действия могут менять внутреннеесостояние объекта — при открытии или закрытиифайла свойство «открыт» принимает значения «да»или «нет», соответственно.

Page 26: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

26

Поведение• Программа, написанная с использованием ООП, обычно состоит из множества объектов, и все этиобъекты взаимодействуют между собой.

• В терминологии объектно-ориентированного подходапонятия «действие», «сообщение» и «метод»являются синонимами.

• Поведение (behavior) — действия и реакцииобъекта, выраженные в терминах передачисообщений и изменения состояния; видимая извне ивоспроизводимая активность объекта.

Page 27: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

27

Уникальность• Уникальность — это то, что отличает объектот других объектов.

• Пример: банкноты.• В машинном представлении под параметромуникальности объекта чаще всегопонимается адрес размещения объекта впамяти.

• Уникальность объекта состоит в том, чтовсегда можно определить, указывают двессылки на один и тот же объект или наразные объекты.

Page 28: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

28

Уникальность

• Уникальность ≠ имени ссылки наобъект.

• На один объект может указыватьнесколько ссылок, и ссылки могутменять свои значения (ссылаться надругие объекты).

• Уникальность (identity) — свойствообъекта; то, что отличает его от другихобъектов.

Page 29: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

29

Классы• Все банкноты принадлежат одному и тому же классу объектов

(именно с этим связана их одинаковость). Номинальнаястоимость, материал, форма — это атрибуты класса.

• Совокупность атрибутов и их значений характеризует объект. Наряду с термином «атрибут» часто используют термины«свойство», «реквизит» и «поле».

• Все объекты одного и того же класса описываютсяодинаковыми наборами атрибутов. Однако объединениеобъектов в классы определяется не наборами, а семантикой.

• «Конюшня» и «лошадь» могут иметь одинаковые атрибуты: цена и возраст.

Page 30: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

30

Классы• Формально класс — это шаблон поведения объектов определенного

типа с заданными параметрами, определяющими состояние. Всеэкземпляры одного класса (объекты, порожденные от одного класса) имеют один и тот же набор свойств и общее поведение, то естьодинаково реагируют на одинаковые сообщения.

• В соответствии с UML (Unified Modelling Language — унифицированныйязык моделирования), класс изображается в виде прямоугольника, состоящего из трех частей. В верхней части помещается названиекласса, в средней — свойства объектов класса, в нижней — действия, которые можно выполнять с объектами данного класса (методы).

• Каждый класс также может иметь специальные методы, которыеавтоматически вызываются при создании и уничтожении объектовэтого класса:– конструктор (constructor) - выполняется при создании объектов;– деструктор (destructor) - выполняется при уничтожении объектов.

Page 31: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

31

Пример класса - класс HumanAttributes – свойства, operations – описания методов, private – свойствадоступны внутри класса, public – методы доступны извне, описываютинтерфейс для объектов этого класса

Page 32: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

32

Инкапсуляция• Инкапсуляция (encapsulation) — это сокрытиереализации класса и отделение его внутреннегопредставления от внешнего (интерфейса).

• При использовании объектно-ориентированногоподхода не принято применять прямой доступ ксвойствам какого-либо класса из методов другихклассов. Для доступа к свойствам класса принятозадействовать специальные методы этого классадля получения и изменения его свойств (getters иsetters).

• Внутри объекта данные и методы могут обладатьразличной степенью открытости (или доступности).

Page 33: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

33

Инкапсуляция• Открытые члены класса составляют внешнийинтерфейс объекта. Это то, что доступно другимклассам.

• Благодаря сокрытию реализации за внешниминтерфейсом класса можно менять внутреннююлогику отдельного класса, не меняя код остальныхкомпонентов системы. Это свойство называетсямодульность.

• Преимущества доступа через методы:– контроль корректных значений полей;– лёгкость изменения способа хранения данных;– простота отладки.

Page 34: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

34

Наследование• Наследование (inheritance) — это отношение междуклассами, при котором класс использует структуруили поведение другого класса (одиночноенаследование), или других (множественноенаследование) классов.

• Наследование вводит иерархию «общее/частное», вкоторой подкласс наследует от одного илинескольких более общих суперклассов.

• Подклассы обычно дополняют или переопределяютунаследованную структуру и поведение.

Page 35: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

35

Полиморфизм

• Полиморфизм является одним изфундаментальных понятий в объектно-ориентированном программированиинаряду с наследованием иинкапсуляцией.

• Слово «полиморфизм» греческогопроисхождения и означает «имеющиймного форм».

• Функция с одним и тем же названием

Page 36: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

36

Полиморфизм• Полиморфизм (polymorphism) — положение теориитипов, согласно которому имена (например, переменных) могут обозначать объекты разных (ноимеющих общего родителя) классов. Следовательно, любой объект, обозначаемый полиморфным именем, может по-своему реагировать на некий общий наборопераций.

• Перегрузка методов — возможность созданиянескольких методов с одним и тем же именем, норазным количеством или различными типамипередаваемых параметров.

Page 37: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

37

• Программирование в ООП заключается всоздании иерархии классов и написанииметодов для этих классов

• В языке С++ программный модуль состоит издвух файлов: с расширениями .h и .cpp

• В файле name.h описаны классы (ихструктура), а в name.cpp – методы классов (ввиде функций или подпрограмм)

Page 38: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

38

Пример простого консольногоприложения на С++

• Приложение вводит команду: символ 1, 2, 3 или q

• Выполняет ее обращаясь ксоответствующему методу класса Sort

Page 39: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

39

#include <stdio.h>#include <conio.h>#include <string.h>#include <windows.h>#include "Unit2.h"Sort s;void main(){SetConsoleTitle("Bubble sorting by

Lysenkov Victor");char c = '1';while (c != 'q'){clrscr();printf("Operations:\n\n");printf("1. Int numbers sorting\n");printf("2. Float numbers sorting\n");printf("3. Strings sorting\n");printf("q. Quit\n\n");printf(">> ");c = getch();switch(c)

{case '1':

s.IntSort();break;

case '2':s.FloatSort();break;

case '3':s.StringSort();break;

case 'q':break;

default:printf("\nWrong choise!");getch();break;

}}

}

Page 40: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

40

Класс Sort

class Sort{

public:Sort(); // конструкторvoid IntSort(); // сортировка целых чиселvoid FloatSort();void StringSort();~Sort(); // деструктор

};

Page 41: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

41

Функция сортировки целых чиселvoid Sort::IntSort(){

clrscr();int size = 0;printf("Quantity of elements: ");scanf("%d", &size);

int *array = new int[size];

for (int i=0; i<size; i++){

printf("[%d]: ", i);scanf("%d", &array[i]);

}

printf("\nArray before sorting:\n");for (int i=0; i<size; i++)

printf("%d ", array[i]);

int tmp = 0;

for (int i=0; i<size - 1; i++)for (int j=0; j<size - 1; j++)

if (array[j] > array[j+1]){

tmp = array[j];array[j] = array[j+1];array[j+1] = tmp;

}

printf("\n\nArray after sorting:\n");for (int i=0; i<size; i++)

printf("%d ", array[i]);

delete []array;getch();

}

Page 42: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

42

Логическое программирование.Пролог (Prolog) – язык логического

программирования• Базовым принципом языка Prolog является равнозначностьпредставления программы и данных(декларативность), отчего утвержденияязыка одновременно являются изаписями, подобными записям в базеданных, и правилами, несущими в себеспособы их обработки

Page 43: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

43

• Особенности языка– Описание проблемы и правил ее решения в виде предикатов-фактов и правил логического вывода (в логике предикатов 1-гопорядка)

– Нахождение всех возможных решений с помощью механизмапоиска с возвратом (backtracking) (или обратного логическоговывода)

– Интерпретируемый (обычно) язык с простым синтаксисом, хотянекоторые версии позволяют создавать исполняемый файлпрограммы (exe-файл)

– Запуск программы на Прологе осуществляется заданием т.н. целевого предиката, который надо доказать

Язык программирования Prolog

Page 44: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

44

• Факты– Воробей – это птица.Воробей – родитель птенца.

• Правило вывода– Некто является птицей, еслинего есть родитель – птица.

• Программа– птица (воробей).– птица (X):– родитель (Y, X),

птица (Y).– родитель (воробей, птенец).

• Запрос– птица (Z)

• Все возможныерешения:– Z = воробей– Z = птенец

Пример программы на PDC-Prolog

Page 45: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

45

Пример программы на PDC-Prolog

PREDICATESbird (symbol)parent (symbol, symbol)

CLAUSESbird («воробей»).bird (X):– parent (Y, X), bird (Y).parent («воробей», «птенец»).

Goal: bird (Z)Z = «воробей»Z = «птенец»

Факт

Факт

Правило вывода

Внешняя цель

Page 46: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

46

PREDICATEStens (string)ones (string)start

CLAUSEStens («Двадцать»).tens («Тридцать»).ones («два»).ones («три»).start :- tens (X), ones (Y), write (X, « », Y), nl, fail.

GOALstart.

РЕШЕНИЕДвадцать дваДвадцать триТридцать дваТридцать три

Поиск с возвратом на PDC-Prolog

Page 47: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

47

• Особенности языка– Одинаковая форма представления данных ипрограмм – в виде списка или S-выражений(вложенных друг в друга скобочных структур)

– Не требуется явное описание типов данных, используемых в программе

– Основной способ решения – рекурсия– Интерпретируемый (обычно) язык с простымсинтаксисом, хотя некоторые версии позволяютсоздавать исполняемый файл программы (exe-файл)

– На нем написана система автоматизациипроектирования AutoCAD

Функциональное программирование.Язык программирования LISP

Page 48: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

48

(+ 2 3)можнорассматривать каксписок илиS-выражение илипрограммаили данные

> (+ 2 3)5

> ‘(+ 2 3)(+ 2 3)

> (quote (+ 2 3))(+ 2 3)

Пример простой программы на LISP:Вычисление суммы 2+3

Page 49: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

49

ТребованияТребования кк ПОПО•• ФункциональностьФункциональность:: программапрограмма должнадолжна выполнятьвыполнять ожидаемыеожидаемые функциифункции. . ФункцииФункции нужнонужно

реализовыватьреализовывать вв порядкепорядке ихих необходимостинеобходимости заказчикузаказчику, , чтобычтобы этоэто сделатьсделать, , необходимонеобходимо««вникнутьвникнуть»» вв предметнуюпредметную областьобласть ии определитьопределить, , чточто действительнодействительно важноважно заказчикузаказчику; ; выделитьвыделитьглавныеглавные, , вспомогательныевспомогательные ии второстепенныевторостепенные функциифункции..

•• НадежностьНадежность:: необходимонеобходимо обеспечитьобеспечить минимумминимум ошибокошибок, , сбоевсбоев, , защитузащиту информацииинформации ототнепреднамереннойнепреднамеренной порчипорчи. . ПрограммаПрограмма должнадолжна разумноразумно реагироватьреагировать нана вводввод пользователемпользователемлюбыхлюбых данныхданных, , иначеиначе пользователипользователи будутбудут ««боятьсябояться»» ошибитьсяошибиться, , чточто, , каккак минимумминимум, , замедлитзамедлит ихихработуработу сс системойсистемой. . КромеКроме тоготого, , программыпрограммы, , предназначенныепредназначенные длядля работыработы вв компьютерныхкомпьютерных сетяхсетях, , требуюттребуют защитызащиты отот разногоразного родарода вирусныхвирусных ии хакерскиххакерских атакатак, , –– программапрограмма должнадолжна проверятьпроверять всевсевходящиевходящие данныеданные, , особенноособенно тщательнотщательно тете, , которыекоторые приходятприходят попо сетисети..

•• УдобствоУдобство:: программапрограмма должнадолжна иметьиметь интуитивноинтуитивно--понятныйпонятный интерфейсинтерфейс, , удобныйудобный длядляпользователяпользователя. . НужноНужно минимизироватьминимизировать количествоколичество действийдействий, , необходимыхнеобходимых пользователюпользователю длядлявыполнениявыполнения задачизадачи, , ноно нене вв ущербущерб понятностипонятности самихсамих действийдействий..

•• ЭффективностьЭффективность: : программапрограмма должнадолжна эффективноэффективно использоватьиспользовать памятьпамять, , процессорпроцессор, , ««жёсткийжёсткий»»дискдиск ии другиедругие ресурсыресурсы системысистемы. . ВВ особыхособых случаяхслучаях ((когдакогда ««медлительностьмедлительность»» системысистемы критичнакритична) ) этоэто требованиетребование становитсястановится едваедва лили нене самымсамым важнымважным, , важнееважнее надёжностинадёжности, , ноно чащечаще онооно менееменеесущественносущественно, , чемчем сопровождениесопровождение. .

•• СопровождениеСопровождение:: программапрограмма должнадолжна бытьбыть понятнойпонятной, , гибкойгибкой ии ««простойпростой вв сопровождениисопровождении, , переносепереносе нана новыеновые платформыплатформы ии развитииразвитии»» -- этоэто требованиетребование программистовпрограммистов, , вв отличиеотличие ототпредыдущихпредыдущих, , которыекоторые являютсяявляются требованиямитребованиями заказчиковзаказчиков, , пользователейпользователей. . УдобствоУдобствосопровождениясопровождения, , каккак правилоправило, , находитсянаходится вв противоречиипротиворечии сс эффективностьюэффективностью ии длядля большинствабольшинствапрограммпрограмм болееболее важноважно. . ПонятностьПонятность программыпрограммы позволяетпозволяет быстробыстро еёеё развиватьразвивать, , добавлятьдобавлятьновыеновые функциифункции, , исправлятьисправлять ошибкиошибки..

Page 50: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

50

Критерии качества ПОВнешние характеристики

–корректность•наличие/отсутствие дефектов в спецификации, проекте иреализации

–практичность•легкость изучения и использования

–эффективность•степень использования системных ресурсов

–надежность•способность системы выполнять необходимые функции; интервал между отказами

–целостность•способность предотвращать неавторизованный илинекорректный доступ

–адаптируемость•возможность использования в других областях и средах

–правильность•степень безошибочности данных, выдаваемых системой

–живучесть•способность продолжать работу при недопустимых данныхили в напряженных условиях

Внутренниехарактеристики

–удобствосопровождения

–тестируемость

–удобочитаемость

–гибкость

–портируемость

–возможностьповторногоиспользования

–понятность

Page 51: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

51

Технологии программированияТехнология программирования — способ организации процессасоздания программы.

На разных уровнях и по разным критериям выделяютпересекающиеся модели:

•Нисходящее (структурное) программирование

•Макетирование

•Спиральная (итерационная) модель разработки ПО

•Объектно-ориентированное программирование

•Компонентный подход (COM, CORBA)

•САSЕ-технологии

•RAD

•RUP

•Экстремальное программирование

Page 52: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

52

Структурное программирование

• В основе структурного подхода лежит идея декомпозиции, то естьразбиения системы на части, реализующие отдельные подзадачи. Каждая подзадача, в свою очередь, дробится на более мелкие. Этот процесс называется нисходящим проектированием.

• При написании структурной программы применяетсяфиксированный набор конструкций, называемых базовыми, чтопозволяет уменьшить как количество ошибок в программе, так иих цену.

• Под ценой ошибки понимается стоимость ее исправления: онатем выше, чем позже в процессе разработки обнаружена ошибка.

Page 53: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

53

Стратегии создания ПО

Эволюци-онная

Инкремент-ная

ПромежуточноеПОраспространяется?

Цикловконструирова-ния

В началеопределены всетребования?

+±-

>1>11

-++

ИтеративныеВодопад-ная

Page 54: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

54

Постановказадачи

Анализ

Проектирование

Реализация

Модификация

Водопадная модель жизненногоцикла ПО:

Синонимы: классическийжизненный цикл, каскаднаямодель

Page 55: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

55

Макетирование(прототипирование)

Построение/уточнениемакета

Оценкамакета

заказчиком1

2 Проектирование продукта

Page 56: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

56

Инкрементная модель

Анализ Проектирование

Кодиро-вание

Тестиро-вание

Поставка 1-гоинкремента

1-й инкремент

Анализ Проектирование

Кодиро-вание

Тестиро-вание

2-й инкремент

Анализ Проектирование

Кодиро-вание

Тестиро-вание

3-й инкремент

Поставка 2-гоинкремента

Поставка 3-гоинкремента

Page 57: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

57

Технология RAD Rapid Application Development — Быстрая разработка приложений.

Ориентирована на максимально быстрое получение первых версийразрабатываемого ПО. Она предусматривает:– ведение разработки небольшими группами (3-7 человек), каждая из которых проектирует и реализует отдельныеподсистемы, позволяет улучшить управляемость проекта;

– использование готовых компонентов способствует уменьшениювремени получения работоспособного прототипа;

– наличие четко проработанного графика цикла, рассчитанного неболее чем на три месяца, существенно увеличиваетэффективность работы.

• Технология RAD хорошо зарекомендовала себя для относительнонебольших стандартных проектов, разрабатываемых дляконкретного заказчика.

Page 58: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

58

РаботаРабота вв средесреде DelphiDelphi

Page 59: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

59

Спиральная модель разработки ПО• Программное обеспечение создается итерационно с

использованием метода прототипирования.• Прототипом называют действующий программный продукт,

реализующий отдельные функции и внешние интерфейсыразрабатываемого программного обеспечения.

Постановказадачи,

планирование

Анализ риска

Проектирование

Реализация, оценка

заказчиком

Page 60: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

60

Экстремальное программирование• Основная идея экстремального программирования (ХР) —

устранить высокую стоимость изменений, вносимых в ПО впроцессе как разработки, так и эксплуатации.

• Цикл разработки в ХР состоит из очень коротких итераций. Четырьмя базовыми действиями в цикле являются:– выслушивание заказчика– проектирование– кодирование– тестирование.

• Заказчик постоянно присутствует в группе разработчиков. • При принятии решений всегда стремятся выбрать самое

простое, тесты пишутся еще до написания кода.• Сборка системы выполняется ежедневно.

Page 61: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

61

Компонентный подход и САSЕ-технологии

• Компонентный подход предполагает построение программногообеспечения из отдельных компонентов — физически отдельносуществующих частей программного обеспечения, которыевзаимодействуют между собой через стандартизованныедвоичные интерфейсы.

• В отличие от обычных объектов, объекты-компоненты можнособрать в динамически вызываемые библиотеки илиисполняемые файлы, распространять в двоичном виде (безисходных текстов) и использовать в любом языкепрограммирования, поддерживающем соответствующуютехнологию.

• Компонентный подход лежит в основе технологий, разработанныхна базе СОМ и СОRВА.

Page 62: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

62

• Технология СОМ определяет общий принципвзаимодействия программ любых типов: библиотек, приложений, операционной системы, т. е. позволяет одной части программного обеспеченияиспользовать функции (службы), предоставляемыедругой, независимо от того, функционируют ли этичасти в пределах одного процесса, в разныхпроцессах на одном компьютере или на разныхкомпьютерах. Модификация СОМ, обеспечивающаяпередачу вызовов между компьютерами, называетсяDCOM

• По технологии СОМ приложение предоставляет своислужбы, используя объекты СОM, которые являютсяэкземплярами классов СОМ. Объект СОМ можетреализовывать несколько интерфейсов.

Технологии СОМ

Page 63: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

63

На базе технологии COM были разработаны компонентныетехнологии, решающие различные задачи разработкипрограммного обеспечения.

• OLE-automation — технология создания приложений, обеспечивающая доступ к их внутренним службам. Например, ееподдерживает Microsoft Ехсеl, предоставляя другим приложениямсвои службы.

• ActiveX — технология, построенная на базе OLE-automation, предназначена для создания как распределенного в сети, так исосредоточенного на одном компьютере программногообеспечения. Предполагает использование визуального программирования длясоздания компонентов — элементов управления ActiveX. Полученные таким образом элементы управления можноустанавливать на компьютер дистанционно с удаленного сервера, причем устанавливаемый код зависит от используемойоперационной системы.

Технологии СОМ

Page 64: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

64

• MTS (Microsoft Transaction Server — серверуправления транзакциями) — технология, обеспечивающая безопасность и стабильнуюработу распределенных приложений при большихобъемах передаваемых данных.

• MIDAS (Multilier Distributed Application Server —сервер многозвенных распределенныхприложений) — технология, организующая доступ кданным разных компьютеров с учетомбалансировки нагрузки сети.

Все указанные технологии реализуют компонентныйподход, заложенный в СОМ.

Технологии СОМ

Page 65: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

65

CASE-технологииComputer Aided Software/System Engineering – автоматизированная

разработка ПО/системСуществуют САSЕ-технологии, поддерживающие как структурный, так и

объектный (в т. ч. компонентный) подходСАSЕ-средства повышают производительность труда программистов и

улучшают качество программного обеспечения. Они:– обеспечивают автоматизированный контроль совместимости

спецификаций проекта;– уменьшают время создания прототипа системы;– ускоряют процесс проектирования и разработки;– автоматизируют формирование проектной документации для всех

этапов жизненного цикла;– частично генерируют коды программ для различных платформ

разработки;– поддерживают технологии повторного использования компонентов

системы;– обеспечивают возможность восстановления проектной

документации по имеющимся исходным кодам.

Page 66: Лекция 5. - insycom.ru · А.В.Гаврилов КафедраПТМ, НГТУ 6 6 Классификацииязыков Языкипрограммирования Высокогоуровня

А.В.ГавриловКафедра ПТМ, НГТУ

66

UML – язык для CASE-средств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)