Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Современные программные средства
Содержание лекции: - основные этапы решения задач; понятие алгоритма; способы записи алгоритмов; базовые алгоритмические структуры; языки программирования и их классификация; обзор современных технологий программирования.
Цель лекции: -изучитьвиды алгоритмов и способы их записи, этапы процесса разработки программ, ознакомиться с современными программными средствами. Человечество живет в мире алгоритмов и программ. Например, физиологические процессы – это огромная, тщательно отлаженная и сложно устроенная «библиотека» программ поведения организма. Основы алгоритмизации и программирования фундаментальны и имеют общий характер, приближающий их к основным законам математики. Процесс решения задачи на компьютере состоит из нескольких этапов: 1) словесная постановка задачи (концептуальная модель); 2) математическая постановка задачи (математическая модель); 3) разработка алгоритма решения задачи (алгоритмическая модель); 4) реализация алгоритма на языке программирования (программная модель); 5) тестирование и отладка программы. На первом этапе формулируется условие задачи, на втором этапе определяются входные и выходные данные и их аналитическая взаимосвязь. Больше всего времени требуется на тестирование и отладку программы. Это связано с тем, что на этом этапе устраняются ошибки, допущенные на всех предыдущих этапах решения задачи. Остановимся подробнее на этапах разработки и реализации алгоритма решения задачи. Слово «алгоритм» происходит от имени математика IX в. Аль Хорезми, который сформулировал правила выполнения арифметических действий.Первоначально под алгоритмом понимали только правила выполнения четырех арифметических действий над числами. В дальнейшем это понятие стали использовать вообще для обозначения последовательности действий, приводящих к решению любой поставленной задачи. Говоря об алгоритме вычислительного процесса, необходимо понимать, что объектами, к которым применяется алгоритм, являются данные. Алгоритм решения вычислительной задачи представляет собой совокупность правил преобразования исходных данных в результат. Основными свойствамиалгоритма являются: детерминированность, результативность, массовость, дискретность.
Существует несколько способов записи алгоритмов: словесный, формульно-словесный, графический, язык операторных схем, алгоритмический язык. Наибольшее распространение благодаря своей наглядности получил графический способ записи алгоритмов посредством блок-схем. Перечень символов, их наименование, отображаемые ими функции, форма и размеры определяются ГОСТами.Представление алгоритма программы в виде блок-схемы имеет два недостатка: предполагает слишком низкий уровень детализации, что часто скрывает суть сложных алгоритмов и позволяет использовать неструктурные способы передачи управления (goto), причем часто на схеме алгоритма они выглядят проще, чем эквивалентные структурные. Кроме схем, для описания алгоритмов можно использовать псевдокоды, Flow-формы и диаграммы Насси-Шнейдермана. Все перечисленные способы с одной стороны базируются на тех же основных структурах, а с другой стороны, допускают разные уровни детализации. Каждый символ Flow-формы соответствует управляющей структуре и изображается в виде прямоугольника. Для демонстрации вложенности структур символ Flow-формы вписывается в соответствующую область прямоугольника любого другого символа. Символы Flow-форм, соответствующие основным и дополнительным управляющим конструкциям, приведены на рисунке А1. Основное отличие диаграмм Насси-Шнейдермана от Flow-форм заключается в том, что область обозначения условий и вариантов ветвления изображают в виде треугольников (рисунок А2). Такое обозначение обеспечивает большую наглядность представления алгоритма. Общим недостатком Flow-форм и диаграмм Насси-Шнейдермана является сложность построения изображений символов, что усложняет практическое применение этих нотаций для описания больших алгоритмов. В отличие от блок-схем псевдокоды не ограничивают степень детализации операций, но, не являясь графическими, хуже отображают их вложенность. Описать неструктурный алгоритм с помощью псевдокодов, Flow-форм и диаграмм Насси-Шнейдермана невозможно, т. к. для неструктурной передачи управления в них отсутствуют условные обозначения. Их использование изначально ориентирует проектировщика только на структурные способы передачи управления, а потому требует тщательного анализа алгоритма.
При всем многообразии алгоритмов решения задач в них можно выделить три основных вида вычислительных процессов: линейный, разветвленный и циклический, для реализации которых в программах используют соответствующие базовые управляющие конструкции: следование, ветвление, цикл-пока. Помимо базовых, процедурные языки программирования высокого уровня используют еще три конструкции (структуры), которые легко реализуются через базовые: выбор, цикл-до, цикл с заданным числом повторений. Перечисленные шесть конструкций были положены в основу структурного программирования. Слово «структурное» в названии подчеркивает тот факт, что при программировании использованы только перечисленные конструкции. Отсюда и понятие «программирование без go to». Программы, написанные с использованием только структурных операторов передачи управления, называют структурными, чтобы подчеркнуть их отличие от программ, при реализации которых использовались низкоуровневые способы передачи управления. Разработанный алгоритм реализуется в виде программных кодов (программы) на одном из языков программирования. Существующие языки программирования можно разделить на следующие группы: - универсальные языки высокого уровня; - специализированные языки разработчика программного обеспечения; - специализированные языки пользователя; - языки низкого уровня. В группе универсальных языков высокого уровня в настоящий момент безусловным лидером являются языки С и C++, различные версии которых имеют целый ряд существенных достоинств: многоплатформенность; наличие операторов, реализующих основные алгоритмические структуры; возможность программирования на низком (системном) уровне с использованием адресов оперативной памяти; огромные библиотеки подпрограмм и классов. Поэтому эти языки являются основными для создания операционных систем. Альтернативой С и C++ в этой группе языков является Pascal, компиляторы которого в силу четкого синтаксиса обнаруживают помимо синтаксических и большое количество семантических ошибок. Версия Object Pascal, используемая в среде Delphi, сопровождается профессиональными библиотеками классов, упрощающими ведение больших разработок, в том числе и требующих использования баз данных, что делает Delphi достаточно эффективной средой для создания приложений MS Windows. Кроме этих языков к группе универсальных принадлежат также Basic, Modula, Ada и некоторые другие, каждый из которых имеет свои особенности и, соответственно, свою область применения. Специализированные языки разработчика используются при создании специального программного обеспечения: языки баз данных (SQL), языки создания сетевых приложений (HTML, XML), языки создания систем искусственного интеллекта и т. д. Эти языки изучаются в специальных курсах. Специализированные языки пользователя обычно являются частью профессиональных сред пользователя, характеризуются узкой направленностью и разработчиками программного обеспечения не используются (1C:Бухгалтерия). Языки низкого уровня (Assembler) позволяют осуществлять программирование на уровне машинных команд. При этом получают оптимальные программы, как с точки зрения времени выполнения, так и с точки зрения объема необходимой памяти. Но эти языки совершенно не пригодны для создания больших программ и, тем более, программных систем. Языки низкого уровня не поддерживают принципов структурного программирования. В настоящее время языки типа Ассемблера обычно используют при написании сравнительно простых программ, взаимодействующих непосредственно с техническими средствами, (например, драйверов); в виде вставок в программы на языках высокого уровня, (например, для ускорения преобразования данных в циклах с большим количеством повторений).
Рост сложности и размеров разрабатываемого программного обеспечения, а также стремление разграничить доступ к глобальным данным программы, чтобы уменьшить количество ошибок, дали толчок к развитию технологии модульного программирования. Эту технологию поддерживают современные версии языков Pascal и С (C++), языки Ада и Modula. Использование модульного программирования существенно упростило разработку программного обеспечения несколькими программистами. Модули без изменений можно было использовать в других разработках, что повысило производительность труда программистов. Практика показала, что структурный подход в сочетании с модульным программированием позволяет получать достаточно надежные программы, размер которых не превышает 100000 операторов. Недостатком модульного программирования является то, что ошибка в интерфейсе при вызове подпрограммы выявляется только при выполнении программы. При увеличении размера программы обычно возрастает сложность межмодульных интерфейсов, и с некоторого момента предусмотреть взаимовлияние отдельных частей программы становится практически невозможно. Для разработки программного обеспечения большого объема было предложено использовать объектный подход. Объектная структура программы впервые была использована в языке имитационного моделирования сложных систем Simula, появившемся еще в 60-х годах XX в. Естественный для языков моделирования способ представления программы получил развитие в другом специализированном языке моделирования - языке Smalltalk (70-е годы XX в.), а затем был использован в новых версиях универсальных языков программирования, таких, как Pascal, C++, Modula, Java.
Основным достоинством объектно-ориентированного программирования по сравнению с модульным программированием является «более естественная» декомпозиция программного обеспечения, которая существенно облегчает его разработку. Кроме этого, объектный подход предлагает новые способы организации программ, основанные на механизмах инкапсуляции, наследования и полиморфизма. Эти механизмы позволяют конструировать сложные объекты из сравнительно простых объектов. В результате существенно увеличивается показатель повторного использования кодов и появляется возможность создания библиотек классов для различных применений. Бурное развитие технологий программирования, основанных на объектном подходе, позволило решить многие проблемы. Так были созданы среды,поддерживающие визуальное программирование, например, Delphi, C++ Builder, Visual C++ и т. д. При использовании визуальной среды у программиста появляется возможность проектировать некоторую часть (например, интерфейсы будущей программы) с применением визуальных средств добавления и настройки специальных библиотечных компонентов. Результатом визуального проектирования является заготовка будущей программы, в которую уже внесены соответствующие коды. Дополнительную информацию по теме можно получить в [2, 27-43].
Приложение А
Рисунок А1 - Условные обозначения Flow-форм для основных конструкций: а - следование; б - ветвление; в - выбор; г - цикл-пока; д - цикл-до; е - счетный цикл
Рисунок А2 - Условные обозначения диаграмм Насси-Шнейдермана для основных конструкций: а - следование; б - ветвление; в - выбор; г - цикл-пока; д - цикл-до
Список литературы
1. Информатика. Базовый курс. Учебное пособие для вузов под ред. Симоновича С.В. - СПб: Питер, 2003. 2. Симонович С.В. и др. Специальная информатика: Учебное пособие. - М.: АСТ-Пресс, 2000. 3. Попов В.Б. Основы информационных и телекоммуникационных технологий. Программные средства информационных технологий. – М.: Финансы и статистика, 2005. 4. Инчин А.С. Работа на персональном компьютере. В 2-х частях. - Алматы, 2003.
|
||||||||||||||
Последнее изменение этой страницы: 2017-01-25; просмотров: 236; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.173.227 (0.016 с.) |