Лекция №2. Особенности разработки сложных программных систем 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лекция №2. Особенности разработки сложных программных систем



Содержание

  Лекция № 1. Классификация программного обеспечения. Технологии программирования. Основные понятия и подходы……………………..  
  Лекция № 2. Особенности разработки сложных программных систем..  
  Лекция № 3. Структурное и неструктурное программирование. Основы алгоритмизации…………………………………………………..  
  Лекция № 4. Алгоритмические языки и предъявляемые к ним требования. Процедурные языки…………………………………………  
  Лекция № 5. Введение в язык С++. Структура и этапы создания программы на языке С++. Стандарты языка С++……………………….  
  Лекция № 6. Представление данных в языке С++. Оператор присваивания. Арифметические операции. Директивы препроцессора  
  Лекция № 7. Функции ввода/вывода. Основные конструкции языка С++………………………………………………………………………….  
  Лекция № 8. Сложные типы данных: массивы. Одномерные и многомерные массивы. Организация алгоритмов сортировки…………  
  Лекция № 9. Сложные типы данных: символьные массивы. Обработка символьных данных…………………………………………..  
  Лекция № 10. Сложные типы данных: структуры и объединения……..  
  Лекция № 11. Сложные типы данных: файлы. Файловые операции над массивами и структурами…………………………………………….  
  Лекция № 12. Функции и их параметры. Рекурсия……………………..  
  Лекция № 13. Указатели и ссылки………………………………………..  
  Лекция № 14. Динамическое распределение памяти. Использование указателей при решении задач……………………………………………  
  Лекция № 15. Использование графических возможностей языка……...  
  Приложение А……………………………………………………………..  
  Приложение Б……………………………………………………………...  
  Приложение В……………………………………………………………...  
  Приложение Г……………………………………………………………...  
  Приложение Д……………………………………………………………...  
  Список литературы………………………………………………………..  

Лекция №1. Классификация программного обеспечения. Технологии программирования. Основные понятия и подходы

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

 

Программное обеспечение (ПО) – это совокупность программ, позволяющих осуществить автоматизированную обработку информации на компьютере, предназначенных для многократного использования и применения разными пользователями, а также программных документов, необходимых для их эксплуатации.

Условно программное обеспечение классифицируется как системное (общее) и прикладное (специальное).

Программы, работающие на системном уровне, обеспечивают взаимодействие программ базового уровня с прочими программами системы и непосредственно с аппаратным обеспечением.

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

Между тем, подразделение ПО на системное и прикладное является до некоторой степени устаревшим. Современное разделение предусматривает минимум три градации ПО: системное, промежуточное и прикладное.

Современная тенденция развития ПО состоит в снижении объема как системного, так и прикладного программирования. Основная часть работы программистов выполняется в промежуточном ПО. Снижение объема системного программирования обусловлено современными концепциями ОС, объектно-ориентированной архитектурой и архитектурой микроядра, в соответствии с которыми большая часть функций системы выносится в утилиты, которые можно отнести и к промежуточному ПО. Снижение объема прикладного программирования обусловлено тем, что современные продукты промежуточного ПО предлагают все больший набор инструментальных средств и шаблонов для решения задач своего класса. Значительная часть системного и практически все прикладное ПО пишется на языках высокого уровня, что обеспечивает сокращение расходов на их разработку/модификацию и переносимость.

Промежуточное ПО (middleware) определяется как совокупность программ, осуществляющих управление вторичными ресурсами (конструируемыми самим ПО), которые ориентированы на решение определенного класса задач. К такому ПО относятся менеджеры транзакций, серверы БД, серверы коммуникаций и другие программные серверы. С точки зрения инструментальных средств промежуточное ПО ближе к прикладному, так как не работает напрямую с первичными ресурсами, а использует для этого сервисы, предоставляемые системным ПО. С точки же зрения алгоритмов и технологий разработки оно ближе к системному, так как всегда является сложным программным изделием многократного и многоцелевого использования, в котором применяются алгоритмы, сходные с применяемыми в системном ПО.

Технология программирования (ТП) - это совокупность методов и средств, используемых при разработке ПО. ТП представляет собой набор технологических инструкций:

1) указание последовательности выполнения технологических операций;

2) перечисление условий, при которых выполняются опера­ции;

3) описания самих операций с исходными данными, результатами, инструкциями, нормативами, стандартами, кри­териями и методами оценки.

Технология оп­ределяет способ описания проектируемой системы (модели), исполь­зуемой на конкретном этапе разработки. Различают технологии, используемые на конкретных этапах разработки (определенный метод), и технологии, охватывающие несколько этапов разработки (базовый метод или методология).

Среди основных этапов развития технологий программирования выделяют «стихийное» программирование, структурный, объектный и компонентный подходы к программированию [1].

Этап «стихийного» программирования. Характерной особенностью периода от момента появления первых ЭВМ до середи­ны 60-х годов XX века является то, что сформулиро­ванные технологии программирования практически отсутствовали, а само программирование было искусством.

Пер­вые программы имели простейшую структуру: программа на машинном языке и обрабатываемые данные. Сложность программ в машинных кодах ограничивалась способ­ностью программиста одновременно мысленно отслеживать последователь­ность выполняемых операций и местонахождение данных при программиро­вании. Использовалась интуитивная технология программирования. В результате появления ассемблеров вместо двоичных ко­дов стали использовать символические имена данны х и мнемоники кодов опера­ций, а программы стали более «читаемыми». Именно в этот период зародилась ставшая впоследствии фундаментальной для ТП концепция модульного программирования [1, 9], ориентированная на преодоления трудностей программирования в машинном коде. Создание языков программирования высоко­го уровня (FORTRAN, ALGOL) суще­ственно упростило программирование вычисле­ний, снизив уровень детализации операций, что позволило увеличить сложность программ.

В результате появления средств, позволяющих оперировать подпрограммами, бы­ли созданы огромные библиотеки рас­четных и служебных подпрограмм. Типичная программа состояла из основной программы, области глобальных данных и набора подпрограмм (рисунок А.1а). Однако при увеличении количества подпрограмм возрастала вероятность искажения части глобальных данных какой-либо подпрограммой, поэтому было предложено размещать в них локальные данные (рисунок А.1б).

В начале 60-х годов XX века раз­разился «кризис программирова­ния»: разработчики сложного программного обеспече­ния срывали все сроки завершения проектов: проект устаревал раньше, чем был готов к внедрению, его стоимость увеличивалась, в ре­зультате многие проекты так никогда и не были завершены. Использование разработки «снизу-вверх» при отсутствии четких моделей описания подпрограмм и методов проектирования превращало создание программ в непростую задачу. Интерфейсы программ получались сложными, а при сборке программного продукта выявлялось большое количество ошибок со­гласования, исправление которых требовало серьезного изменения уже разработанных частей программ. При этом в программу часто вносились новые ошибки, в результате чего процесс тестирования и отладки программ занимал более 80% времени разработки, если вооб­ще когда-нибудь заканчивался. Анализ причин возникновения ошибок позволил сформу­лировать новый подход к программированию - струк­турный.

Этап структурного программирования. Структурный подход к программированию, который развивался на втором этапе развития технологий в 60-70 годы XX века. В его основе лежит декомпозиция сложных си­стем с целью последующей реализации в виде отдельных небольших (до 40-50 операторов) подпрограмм, позже названная процедурной декомпозицией. Структурный подход требовал представления задачи в виде иерархии подзадач простейшей структуры, а проектирование осуще­ствлялось «сверху-вниз» и подразумевало реализацию общей идеи. Были введены ог­раничения на конструкции алгоритмов, рекомендованы формальные моде­ли их описания, а также специальный метод проектирования алгоритмов - метод пошаговой детализации. Принципы структурного программирования были заложены в основу процедурных языков программирования, которые включали основные «структурные» операторы передачи управле­ния, поддерживали вложение подпрограмм, локализацию и ограничение области «видимости» данных (PL/1, ALGOL-68, Pascal, С). Дальнейший рост сложности и размеров разрабатываемого программно­го обеспечения потребовал развития структурирования данных,в языках появляется возможность определения пользовательских типов данных [1, 5, 9].

Стремление разграничить доступ к глобальным данным программы дало толчок к появлению и развитию технологии модульного программирования (рисунок А.2), чтопредполагало выделение групп подпрограмм, использующих одни и те же глобальные данные в отдельно компили­руемые модули (библиотеки). Связи между модулями осуществлялись через спе­циальный интерфейс, в то время как доступ к реализации модуля (телам под­программ и некоторым «внутренним» переменным) был запрещен. Эту техноло­гию поддерживают современные версии Pascal, С, C++, Ада и Modula. Структурный подход в сочетании с модульным программированием позволяет получать надежные программы, размером не более 100 000операторов. Существенным недостатком является тот факт, что ошибка в интерфейсе при вы­зове подпрограммы выявляется только при выполнении программы (из-за раздельной компиляции модулей), а при увеличении размера программы возрастает сложность меж­модульных интерфейсов, и предусмотреть взаимовли­яние отдельных частей программы становится практически невозможно. Поэтому для разработки программного обеспечения большого объема было предложено использовать объектный подход.

Этап объектного программирования. На третьем этапе (80-е - 90-е годы XX века) был сформирован объектный подход к программированию.Широкое внедрение персональных компьютеров во все сферы человеческой деятельности привело к бурному развитию пользовательских интерфейсов и созданию четкой концепции качества программного обеспечения [1, 9]. Развиваются методы и языки спецификации. Развивается концепция компьютерных сетей. Возникает необходимость в формировании совершенно нового подхода к разработке сложного программного обеспечения с интуитивно понятным и удобным пользовательским интерфейсом.

Технология создания сложного программного обес­печения, основанная на представлении программы в виде совокупности взаимодействующих путем передачи сообщений программных объ­ектов, каждый из которых является экземпляром определенного клас­са, а классы образуют иерархию с наследованием свойств, была названа объектно-ориентированным программиро­ванием [1, 9].Объектная структура программы (рисунок А.3) впервые была использована в языке имитационного моделирования сложных систем Simula, а затем использована в новых версиях универсальных языков программирования таких, как Pascal, C++, Modula, Java.

Достоинством объектно-ориентированного программирования является «естествен­ная» декомпозиция программного обеспечения, существенно облег­чающая разработку. Это приводит к более полной локализации данных и ин­тегрированию их с подпрограммами обработки, что позволяет вести практи­чески независимую разработку отдельных объектов программы. Кроме того, объектный подход предлагает новые способы организации программ, основанные на механизмах наследования, полиморфизма, компози­ции, наполнения, позволяющих конструировать из простых объек­тов сложные. В результате существенно увеличивается показатель повторного использования кодов и появляется возможность создания библиотек классов. На основе объект­ного подхода были созданы среды, поддерживающие визуальное программирование (Delphi, C++ Builder, Visual C++), при использовании которого некоторая часть будущего продукта проектируется с применением визуальных средств добавления и настройки специальных библиотечных компонентов. В результате появляется заготовка будущей программы, в кото­рую уже внесены коды.

Использование объектного подхода имеет много преимуществ. Однако его конкретная реализация в объектно-ориентированных языках программи­рования таких, как Pascal и C++ имеет существенные недостатки: отсутствуют стандарты компоновки двоичных результатов компиляции объектов в единое целое, даже в пределах одного языка программирования; изменение в реализации одного программного объекта связано с перекомпиляцией модуля и перекомпоновкой всего программного обеспечения, использующего данный объект. Таким образом, сохраняется объективная зависимость модулей программного обеспечения от адресов экспортируемых полей и методов, а также структур и форматов данных. Связи модулей нельзя разорвать, но можно стандартизировать их взаимодействие, на чем и основан компонентный подход к программированию.

В 90-е годы XX века персональные компьютеры стали подключаться к сети как терминалы. Остро встала проблема защиты компьютерной информации и передаваемых по сети сообщений. Начался решающий этап полной информатизации и компьютеризации общества. Четвертый этап развития технологий программирования - компонентный подход и CASE-технологии - не завершился до настоящего времени.

Компонентный подход предполагает построение ПО из отдельных компонентов, ко­торые взаимодействуют между собой через стандартизованные двоичные интерфейсы. Объекты-компоненты можно собрать в динамически вызываемые библиотеки или исполняемые файлы, распространять в двоичном виде (без исходных текстов) и использовать в любом языке программирования, поддерживающем соответствующую технологию [1, 9]. Компонентный подход лежит в основе технологий, разработанных на базе COM (Component Object Model - компонентная модель объектов), и тех­нологии создания распределенных приложений CORBA (Common Object Request Broker Architecture - общая архитектура с посредником обработки запросов объектов), которые используют сходные принципы и разли­чаются лишь особенностями реализации.

Кроме того, отличительной особенностью современного этапа развития технологии программирования являются создание и внедре­ние автоматизированных технологий разработки и сопровождения про­граммного обеспечения, которые были названы CASE-технологиями (Computer-Aided Software/System Engineering - разработка программного обеспечения/программных систем с использованием компьютерной под­держки). Без средств автоматизации разработка достаточно сложного про­граммного обеспечения на настоящий момент становится трудно осуществи­мой: память человека уже не в состоянии фиксировать все детали, которые необходимо учитывать при разработке программного обеспечения. CASE-технологии поддерживают как структурный, так и объектный (компонентный) подходы к программированию [1, 9].

Технология СОМ фирмы Microsoft является развитием техноло­гии OLE I (Object Linking and Embedding - связывание и внедрение объек­тов), которая использовалась в ранних версиях Windows для создания состав­ных документов. Она определяет общую концепцию взаимодей­ствия программ любых типов(библиотек, приложений, операционной сис­темы), т. е. позволяет одной части программного обеспечения использовать функции (службы),предоставляемые другой (рисунок А.4).

Модификация СОМ, обеспечивающая передачу вызовов между компьютерами, называется DCOM (Distributed COM - распределенная СОМ). На базе технологии СОМ и ее распределенной версии DCOM были разработаны компонентные технологии, решающие различные задачи разработ­ки ПО. На возможностях COM базируется технология COM+, которая обеспечивает поддержку распределенных приложений на компонентной основе и предназначена для поддержки систем обработки транзакций [1, 9].

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

а) OLE-automation - технология создания программируемых приложений, обеспечивающая программируе­мый доступ к их внутренним службам (например, MS Excel поддерживает ее, предоставляя другим приложениям свои службы);

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

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

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

Технология CORBA, разработанная группой компаний OMG (Object Management Group - группа внедрения объектной технологии про­граммирования), реализует подход аналогичный СОМ на базе объектов и интерфейсов CORBA.

Программное ядро CORBA реализовано для всех ос­новных аппаратных и программных платформ, и потому технологию можно использовать для создания распределенного программного обеспечения в разнородной вычислительной среде. Организация взаимо­действия между объектами клиента и сервера в CORBA осуществляется с помощью посредника (VisiBroker ) и специ­ализированного программного обеспечения.

К сожалению, в силу ряда причин разработчики были вынуждены отказаться от этой технологии [1, 9]. Сегодня CORBA, главным образом, используется для связывания компонентов, выполняемых внутри корпоративных сетей, в которых коммуникации защищаются брандмауэрами от внешнего мира. Технология CORBA используется также при разработке систем реального времени и встроенных систем, секторе, в котором CORBA действительно развивается. Однако в целом CORBA находится в упадке, и теперь ее нельзя назвать никак иначе, кроме как нишевой технологией.

Приложение А

Основные этапы развития технологий программирования

Рисунок А.1 - Архитектура программ с глобальной и локальной областями данных

 

Рисунок А.2 – Архитектура программы при структурном подходе. Модульное программирование

 

Рисунок А.3 – Объектный подход. Архитектура программы при объектно-ориентированном программировании

 

Рисунок А.4 – Компонентный подход. Технология СОМ

 

 

Рисунок А.5 – Соотношение абстрактного и конкретного в описании блоков

при блочно-иерархическом подходе

 

 

 

Рисунок А.6 – Структура процессов жизненного цикла программного обеспечения


Приложение Б

Элементы блок-схем

 

Таблица Б.1 - Основные элементы блок-схем

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

 


Приложение В

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

Таблица В.1 – Соответствие различных способов описания алгоритмов

Струк-тура Псевдокоды Flow-формы Диаграммы Насси-Шнейдермана
Следо-вание <действие 1> <действие 2>
Ветвле-ние Если <условие> то <действие 1> иначе <действие 2> Все-если
Цикл-пока Цикл-пока<условие> <действие> Все-цикл
Выбор Выбор <код> <код 1>: <действие 1> <код 2>: <действие 2> иначе<действие 3> Все-выбор
Цикл с парамет-ром Для <индекс> = <n>,<m>,<h> <действие > Все-цикл
Цикл-до Выполнять <действие> До <условие>

 

 


Приложение Г

Таблица Г.1 - Специальные и управляющие символы

  Вид Название Вид Название
Специальные символы + Плюс | Черта
++ Приращение || Логическое ИЛИ
- Минус ! Восклицательный знак
-- Уменьшение -> Стрелка
* Звездочка = Операция присваивания
/ Наклонная черта = = Знак равенства
\ Обратный слеш != Не равно
// Двойной слеш > Больше
. Точка < Меньше
, Запятая <= Меньше или равно
: Двоеточие << Сдвиг влево
:: Разрешение >> Сдвиг вправо
; Точка с запятой < > Угловые скобки
Апостроф () Круглые скобки
Кавычки [ ] Квадратные скобки
^ «Крышка» { } Фигурные скобки
% Знак процента /* */ Скобки комментария
& Амперсанд # Знак номера
&& Логическое И ~ Тильда
Управляющие символы \a Сигнал динамика \t Горизонтальная табуляция
\b BS, забой символа \v Вертикальная табуляция
\f Новая страница \\ Обратная косая черта
\n Новая строка \0 Нулевой символ (байт)
\r Возврат каретки \000 Восьмеричная константа
\” Двойная кавычка \xhhh Шестнадцатеричная константа
\’ Апостроф \? Знак вопроса

 

Таблица Г.2 - Зарезервированные слова в C++

and char false int private switch virtual
and_eq class float long protected template void
asm compl for mutable public this volatile
auto const else namespace register throw while
bitand continue enum new return true xor
bitor default explicit not short try xor_eq
bool delete friend not_eq signed typedef  
break do goto operator sizeof typename  
case double if or static union  
catch extern inline or_eq struct unsigned  

 

Таблица Г.3 – Типы данных с разными комбинациями модификаторов

Тип Диапазон изменения Размер в байтах (битах)
от до
void - -  
char (signed char) -128   1 (8)
unsigned char     1 (8)
wchar_t     2 (16)
bool True (Истина) False (Ложь) 1 (8)
int (signed int, short int, signed short int) -32768   2 (16)
unsigned int (unsigned short int)     2 (16)
long int (signed long int) -2147483648   4 (32)
unsigned long int     4 (32)
float 3.4E-38 3.4E+38 4 (32)
double 1.7E-308 1.7E+308 8 (64)
long double 3.4E-4932 3.4E+4932 10 (80)
Примечание – Размер в байтах и диапазон изменения могут варьироваться в зависимости от компилятора, процессора и операционной системы (среды).

 

Таблица Г.4 – Перечень операций, их приоритет и порядок выполнения

Уровень Оператор Порядок Уровень Оператор Порядок
  (). [ ] ->:: Þ   & Þ
  * &! ~ ++ -- + - sizeof new delete Ü   ^ Þ
  . * -> * Þ   | Þ
  * / % Þ   && Þ
  + - Þ   | | Þ
  << >> Þ   ?: Ü
  < <= > >= Þ   = *= /= += -= %= <<= >>= &= ^= |= Ü
  ==!= Þ   , Þ
Примечания 1 Наивысший приоритет имеют операторы 1 уровня, низший – 16 уровня. 2 Знак Þ обозначает выполнение операций слева направо, а знак Ü - выполнение операций справа налево. 3 Унарные операторы (+) и (-), находящиеся на уровне 2, обладают более высоким приоритетом, чем арифметические (+) и (-) с уровня 5. Символ & на уровне 2 - оператор обращения по адресу, а символ & на уровне 9 битовый оператор AND. Символ * на уровне 2 - оператор обращения к указателю, а символ * на уровне 4 – оператор умножения. 4 В отсутствие круглых скобок операторы, находящиеся на одном уровне, обрабатываются согласно их расположению слева направо.

Таблица Г.5 – Основные математические функции

Наименование функции Функция Тип Заголовочный файл
результата аргумента
Абсолютное значение abs(x) cabs(x) fabs(x) int double float int double float <stdlib.h> <math.h> <math.h>
Арккосинус acos(x) double double <math.h>
Арксинус asin(x) double double <math.h>
Арктангенс atan(x) double double <math.h>
Косинус cos(x) double double <math.h>
Синус sin(x) double double <math.h>
Экспонента ex exp(x) double double <math.h>
Степенная функция xy pow(x,y) double double <math.h>
Логарифм натуральный log(x) double double <math.h>
Логарифм десятичный log10(x) double double <math.h>
Корень квадратный sqrt(x) double double <math.h>
Тангенс tan(x) double double <math.h>

 

Таблица Г.6 – Символы преобразования в функциях ввода-вывода

Формат вывода Значение Формат ввода Значение
%c вывод символа (char) %c чтение символа (char)
%d целое десятичное число (int) %d целое десятичное число (int)
%i целое десятичное число (int) %i целое десятичное число (int)
%e (%E) число (float/double) в виде х.хх е+хх (х.хх Е+хх) %e чтение числа типа float/double
%f (%F) число float/double с фиксиро-ванной запятой хх.хххх %h чтение числа типа short int
%g (%G) число в виде f (F) или е(E) в зависимости от значения %o чтение восьмеричного числа
%s строка символов %s чтение строки символов
%o целое число (int) в восьмеричном представлении %x чтение шестнадцатеричного числа (int)
%u беззнаковое десятичное число (unsigned int) %p чтение указателя
%x (%X) целое число (int) в шестнад-цатеричном представлении %n чтение указателя в увеличенном формате
%p (%n) указатель    
Примечание – К форматам можно применять модификаторы l и h, например, %ld (long в десятичном виде), %lo (long в восьмеричном виде), %lu (unsigned long), %lx (long в шестнадцатеричном виде), %lf (long float c фиксированной точкой), %le (long float в экспоненциальной форме), %lg (long float в виде f или е в зависимости от значения).

Таблица Г.7 – Характерные приемы программирования

Прием программирования Действия, выполняемые до цикла Действия, выполняемые в цикле
Накапливание суммы S = 0; S+= элемент_массива;
Накапливание произведения P = 1; P*= элемент_массива;
Накапливание количества k = 0; k++;
Поиск максимального значения max= предполаг_знач; if (текущ_элемент >max) max= текущ_элемент;
Поиск минимального значения min= предполаг_знач; if (текущ_элемент <min) min= текущ_элемент;

 

 

Приложение Д

 
 

Указатели и ссылки

 

 

Рисунок Д.1 – Графическая интерпретация указателя

 

    mPtr+2    
  mPtr+1        
mPtr          
           
Элементы массива М: m[0] m[1] m[2] m[i]

Рисунок Д.2 – Элементы массива и указатели

Список литературы

 

1 Иванова Г.С. Технология программирования.- М.: «Кнорус», 2013.

2 Страуструп Б. Язык программирования С++. – М., 2012.

3 Потопахин В. Искусство алгоритмизации. - М.: «ДМК Пресс», 2011.

4 Сэджвик Р. Алгоритмы на С++. – М.: «Вильямс», 2011.

5 Павловская Т.А. С/С++. Структурное программирование. – СПб., 2010.

6 Немцова Т.И. Программирование на языке высокого уровня. Программирование на языке С++. - М.: «Форум», 2012.

7 Ашарина И.В. Основы программирования на языках С и С++. - М.: Горячая линия-Телеком, 2012.

8 Аляев Ю.А., Козлов О.А. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учебно-справочное пособие. – М.: Финансы и статистика, 2004.

9 Терехов А.Н. Технология программирования. – М.: БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий. - Intuit.ru, 2006.

10 Давыдов В.Г. Технологии программирования С++. – СПб., 2005.

11 Соколов А.П. Системы программирования: теория, методы, алгоритмы: Учебное пособие. - М.: Финансы и статистика, 2004.

 

 

Cводный план 2013 г., поз. 256

 

Наталья Валерьевна Сябина

Лариса Николаевна Рудакова

 

 

ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ

 

Конспект лекций

для студентов специальности 5B070200 - Автоматизация и управление

 

 

Редактор Л.Т. Сластихина

Специалист по стандартизации Н.К. Молдабекова

 

 

Подписано в печать __. __. __. Тираж 100 экз. Объем 4.5 уч.-изд. л. Формат 60х84 1/16 Бумага типографская №1 Заказ _____. Цена 2250 тг.

 

 

Копировально-множительное бюро

некоммерческого акционерного общества

«Алматинский университет энергетики и связи»

050013, Алматы, ул. Байтурсынова, 126



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 614; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.213.214 (0.114 с.)