Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Программные структуры

Если большая программа, она становится плохо читаемой. Могут встречаться повторяющиеся действия с разными данными. Может, надо отсортировать x, потом в какой-то момент – y. Для сокращения, улучшения читаемости есть подпрограммы (или процедуры)

Процедуры Процедуры функции

 

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

 

L=x*(sin(y))+2

Sin – имя процедуры функции, заранее написано в библиотеке. y – входной параметр.

Результат процедуры функции обычно – вычисление одного какого-то значения (строка символов, число, …). Это одно значение и специально оформлять обращение к ней в программе не надо, надо только обозначить. Когда обращаемся к процедуре функции, указываем ее имя и значение, по которому производится вычисление.

 

Результатом процедуры просто может быть изменение значения массива – сортировка, например. Определение каких-то структур. Результаты более разнообразные. Процедуры имеют собственный способ вызова.

Call имя проц (параметры)

 

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

Параметры указываются

X – массив

Y – массив

Допустим, подпрограмма сортирует массив. Имя можем дать любое, например Z или X.

Когда вызвали подпрограмму для сортировку X – те же действия, что описаны для массива Z, выполняются для Х. Передача параметров – по ссылке или по значению. Когда параметры передаются по ссылке, нужные действия производятся с массивом, определенным в основной программе. В качестве адресов обращения к массиву стоят адреса реальных массивов. Копирование массива и работа с копией.

Завели переменную i. Когда сортируем в подпрограмме, могли взять j, а могли взять и i. Это одно и т же или нет? Место в памяти одинаковое? В языках есть понятие – возможность объявить переменную, которая используется в любых частях программы, как распределенную – shared. Это означает, что как i будет использоваться место в памяти, однократно выделенное. Или можно указать переменную как локальную. Подпрограмма закончилась – место освободилось.

 

Подпрограммы call A ----à A[callB] ---àB[…]. Вызовов может быть много. Можно отлаживать подпрограммы отдельно.

Основная программаà A à B à A

-рекурсивные программы. Писать их сложно, надо быть аккуратным и осторожным.

Основная àA à B àA – повторный вход, начинается работа заново. Надо понимать, что глобальные переменные будут меняться, обычно использование при повторном входе запрещено.

 

Следующая структура - сопрограмма

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

 

Есть представление программы в виде задачи и подзадач.

Процесс потоки

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

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

 

Объекты. Это средство общего структурирования программ. До этого было про структурирование операторов, …. А объекты – структурирование данных и программ.

Впервые появились в 67 году. Назывались классом. Одновременно – кластер, в Алголе 68 называлось как раз объект.

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

Операции еще называют методами.

Все это вместе –<проверить>– класс объектов (втф). А объект – та реальная вещь, которая будет существовать в программе. То есть, в программе заводим свой объект, для него отводиться память, и мы потом над ними выполняем действия, вызывая метод из класса объектов.

 

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

В интерфейсе есть:

1. имя класса объекта

2. имена методов и их параметры (как наши данные будут доступны)

3. публичные атрибуты и свойства (внутренние перемены из класса объектов, которые доступны пользователю, с ними можно что-то делать)

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

5. защищенные переменные, которые, тем не менее, описаны в интерфейсе

 

У каждого класса объектов – разное количество методов, операций. Всегда есть два:

1) конструктор

2) деструктор

Работа с классами объектов начинается с конструктора – он выделяет память, …

Деструктор – освободит память, уничтожит объекты.

 

Можно создать класс матрицы, если нет. Но мысль идет дальше – создание механизма наследования = выводимость. Имеется в виду следующее: у нас написанный класс объектов, а нам чего-то не хватает. Можно вывести из этого класса объектов новый. Есть матрица, а хотим квадратную матрицу, а у нее мб свои операции. Из класса А выведем следующий. По сути, добавляем какие-то новые методы в этом новом классе. Добавляем новые методы, несколько модифицируем старые. Защищенные атрибуты в этом случае мб использованы. Может быть множественное наследование, напр. в С++. Возьмем из одного класса одни вещи, из другого – другие. Построим новый класс на базе нескольких. Мб свои неприятности.

У разработчиков есть полемика – запретить ли множественное наследование.

Если язык позволяет работать с классами объектов, есть библиотеки, позволяющие работать с ними при создании программ.

 

<== предыдущая лекция | следующая лекция ==>
Операционная система | Форматы графических данных
Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 634; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.