Понятие алгоритма и программы

Алгоритм - это некоторое правило преобразования информации, применение которого к заданной (исходной) информации приводит к резуль­тату - новой информации. Так, например, применение правила сложения дробей к 1/2 и 2/3 приводит к результату 5/6. Основное внимание в теории алгоритмов уделяется методам задания (описания, констру­ирования) алгоритмов. Алгоритм - это конечный набор инструкций по преобразованию информации (команд), выполнение которых приводит к результату. Каждая инструкция алгоритма содержит точное описание некоторого эле­ментарного действия по преобразованию информации, а также (в явном или неявном виде) указание на инструкцию, которую необходимо выполнить следующей. Так, алгоритм сложения дробей можно задать следующей последовательностью команд: Пример 1. Алгоритм сложения дробей. Вход: A/B, C/D; 1. Вычислить Y = B*D; {Перейти к следующей команде} 2. Вычислить X1 = A*D; {Перейти к следующей команде} 3. Вычислить X2 = B*C; {Перейти к следующей команде} 4. Вычислить X = X1+X2; {Перейти к следующей команде} 5. Вычислить Z = НОД(X,Y); {Перейти к следующей команде} 6. Вычислить Е = X div Z; {Перейти к следующей команде} 7. Вычислить F = Y div Z; {Закончить работу}. Выход: E/F Наш алгоритм состоит из 7-ми инструкций, каждая из которых содержит описание одного из арифметических действий над целыми числами: сложение, умножение, вычисление НОД и целочисленное деление div. Кроме того, каждая инструкция (в неявном виде) содержит указание на следующую выполняемую инструкцию. Таким образом, алгоритм описывает детали­зиро­ванный по шагам процесс преобразования информации. Уровень детализации описания опреде­ляется набором допустимых команд. Этот набор называют набором команд Исполнителя или Интерпретатора. При этом подразумевается, что алгоритмы выполняет Исполнитель (Интерпретатор) - некоторое устройство, однозначно распозна­ющее и точно выполняющее (интерпретирующее) каждую команду алгоритма. Для выполнения нашего алгоритма Исполнитель должен, очевидно, уметь оперировать с целыми числами, выделять числители и знаменатели дробей, а также составлять из пары целых чисел дробь. Кроме того, Исполнитель должен уметь запоминать результаты выполнения опера­ций и переходить к выполнению следующей команды. Представим себе, что в нашем распоряжении находится Исполнитель, интерпретирующий команды - операции целочисленной арифметики - сложение, вычитание, умножение, вычисление неполного частного (div) и остатка (mod), вычисление НОД и НОК с запоминанием результатов и умением переходить к следующей команде. Тогда для этого Исполнителя можно составлять самые разнообразнные алгоритмы арифметических вычислений - т.е. вычислений, заданных формулами типа X = НОД((A + B) div 100, (A * B - 7) mod 10) используя команды, аналогичные командам алгоритма из примера 1. Пример 2. Алгоритм деления отрезка пополам с помощью циркуля и линейки. Вход: Отрезок AB; Построить окружность O1 с центром A и радиусом AB; Построить окружность O2 с центром B и радиусом AB; Найти точки С и D пересечения окружностей O1 и O2; Построить отрезок CD; Найти точку Е пересечения AB и CD. Выход: Точка Е - середина отрезка AB. В примере 2 Исполнитель обладает набором команд, с помощью которых можно решать геометрические задачи на построения с помощью циркуля и линейки. Исполнение алгоритма заключается в последовательном выполнении каждого построения и переходе к исполнению следующей команды. Отметим. что нумеровать команды алгоритма не нужно, если Исполнитель всегда перехо­дит к следующей команде. Пример 3. Алгоритм решения приведенного квадратного уравнения x2 + px + q = 0; Вход: Коэффициенты p и q уравнения x2 + px + q = 0; Вычислить D = p2 - 4q; Если D < 0 то (ответить “Решений нет”; Перейти к 1); Если D = 0 то (вычислить x = -p/2; Перейти к 1); Вычислить x1 = (-p+Ö(D))/2; Вычислить x2 = (-p-Ö(D))/2); 1:Закончить работу. Выход “Решений нет” или корень x или корни x1, x2. В этом примере используется команда вида Если <условие> то (<последовательность команд>) Выполняя эту команду, Исполнитель проверяет истинность условия. Если условие выполнено, Исполнитель переходит к выполнению первой команды из последовательности команд, стоящей после слова то и команды, и исполнение алгоритма следует по тому или иному пути в заключенной в скобки. Если же условие не выполнено, Исполнитель переходит к выполнению следующей команды. Такие команды называют выбирающими, условными или ветвлениями. Выбирающие команды содержат в себе другие команды, выполняющиеся в зависимости от результатов проверки условий. Второй характерной командой, используемой в примере, является команда перехода. Она имеет вид Перейти к < N >, причем число N используется в записи алгоритма как специальная отметка некоторой команды. В примере используются команды перехода Перейти к 1, а числом 1 отмечена команда 1:Закончить работу. Выполнение команды перехода заключается в том, что Исполнитель переходит к выполне­нию команды, отмеченной отметкой N (нарушая при этом естественную после­дова­тельность выполнениия команд).

18. Классификация программных продуктов.
Классификация программных продуктов Программное обеспечение – неотъемлемая часть компьютера, являющаяся логическим продолжением технических средств. Программы, в зависимости от функционального применения, можно условно разделить по категориям или классам. Выделяют три основных класса программных продуктов (см. схему рис. 3.1): системные программы, выполняющие различные вспомогательные функции, такие как: управление ресурсами компьютера, создание копий используемой информации, проверка работоспособности устройств компьютера, вывод справочной информации о компьютере и др.; прикладные программы, непосредственно обеспечивающие работы, выполнение которых необходимо пользователю; средства программирования, облегчающие процесс создания новых программ для компьютера. Рис. 3.1. Классы программных продуктов Системное программное обеспечение (System Software) - совокупность программ и программных комплексов, определяющих работоспособность компьютера и сетей ЭВМ. Системные программы обеспечивают: создание операционной среды функционирования других программ; обеспечение надежной и эффективной работы самого компьютера и вычислительной сети; проведение диагностики и профилактики аппаратуры компьютера и вычислительных сетей; выполнение вспомогательных технологических процессов (копирование, архивирование и восстановление файлов программ и баз данных и т.д.) Данный класс программных продуктов тесно связан с типом компьютера и является его неотъемлемой частью. Программные продукты в основном ориентированы на квалифицированных пользователей - профессионалов в компьютерной области: системного программиста, администратора сети, прикладного программиста, оператора. Однако знание базовой технологии работы с этим классом программных продуктов требуется и конечным пользователям персонального компьютера, которые самостоятельно не только работают со своими программами, но и выполняют обслуживание компьютера, программ и данных. Программные продукты системного класса имеют общие предметные области применения, независимо от специфики. К ним предъявляются высокие требования по надежности и технологичности работы, удобству и эффективности использования. Пакеты прикладных программ (application program package) - комплекс взаимосвязанных программ для решения задач определенного класса конкретной предметной области. Они служат программным инструментарием решения функциональных задач и являются самым многочисленным классом программных продуктов. В данный класс входят программные продукты, выполняющие обработку информации различных предметных областей. Установка программных продуктов на компьютер выполняется квалифицированными пользователями, а непосредственную их эксплуатацию осуществляют, как правило, конечные пользователи - потребители информации. Деятельность конечных пользователей, во многих случаях, весьма далека от компьютерной области (бухгалтерия, контроль участков на производстве, дизайн, поиск по базам данных и пр.), поэтому программные продукты прикладного класса могут быть весьма специфичными для отдельных предметных областей. Инструментарий технологии программирования - совокупность программ и программных комплексов, обеспечивающих технологию разработки, отладки и внедрения создаваемых программных продуктов. Инструментарий включает специализированные программные продукты, которые являются профессиональными средствами разработчика. Программные продукты данного класса поддерживают все технологические этапы процесса проектирования, программирования (кодирования), отладки и тестирования создаваемых программ. Пользователями этого класса программных продуктов являются системные и прикладные программисты. Системное программное обеспечение На рис.3.2 представлена структура системного программного обеспечения - базового программного обеспечения, которое, как правило, поставляется вместе с компьютером, и сервисного программного обеспечения, которое может быть приобретено дополнительно. Базовое программное обеспечение (base software) - минимальный набор программных средств, обеспечивающих работу компьютера. Сервисное программное обеспечение - программы и программные комплексы, которые расширяют возможности базового программного обеспечения и организуют более удобную среду работы пользователя. В базовое программное обеспечение входят: операционная система (ОС); операционные оболочки (текстовые и графические). Рис. 3.2. Классификация системного программного обеспечения компьютера Основную часть системного программного обеспечения составляют операционные системы. Операционная система – совокупность программных средств, обеспечивающих управление аппаратной частью компьютера и прикладными программами, а также их взаимодействие между собой и пользователем. Иными словами, операционные системы обеспечивают работоспособность ПК, взаимодействие всех его частей и интерфейс с пользователем. Пользовательский интерфейс (interface – средства взаимодействия, связи, согласования) – методы и средства взаимодействия человека с аппаратными и программными средствами. Операционная система обычно хранится во внешней памяти компьютера — на диске. При включении компьютера она считывается с дисковой памяти и размещается в оперативной памяти. Этот процесс называется загрузкой операционной системы. Операционные системы классифицируются: по количеству одновременно работающих пользователей - на однопользовательские и многопользовательские; по числу задач, одновременно выполняемых под управлением ОС - на однозадачные и многозадачные; по количеству используемых процессоров - на однопроцессорные и многопроцессорные; по разрядности процессора - на 8-, 16-, 32- и 64-разрядные; по типу пользовательского интерфейса - на командные (текстовые) и объектно-ориентированные (графические); по типу использования общих аппаратных и программных ресурсов - на сетевые и локальные. Главным отличием многопользовательских систем от однопользовательских является наличие средств защиты информации каждого пользователя от несанкционированного доступа других пользователей. В многозадачном режиме каждой задаче (программе, приложению) поочередно выделяется какая-то доля процессорного времени. Поскольку процесс переключения идет очень быстро, а выделяемые задачам доли процессорного времени достаточно малы, то для пользователя создается впечатление одновременного выполнения нескольких задач. Например, можно одновременно запустить на счет математическую систему, включить принтер для печати текста, вести поиск вирусов и раскладывать пасьянс – заметить замедление работы компьютера будет практически невозможно. Традиционно, сравнение ОС осуществляется по следующим характеристикам процесса обработки информации: управление памятью (максимальный объем адресуемого пространства, типы памяти, технические показатели использования памяти); функциональные возможности вспомогательных программ (утилит) в составе ОС; наличие компрессии (сжатия) диска; возможность архивирования файлов; поддержка многозадачного режима работы; поддержка сетевого программного обеспечения; наличие сетевого программного обеспечения; наличие качественной документации; условия и сложность процесса инсталляции. В настоящее время большинство компьютеров в мире работают под управлением какой-либо версии операционной системы Windows фирмы Microsoft. Рассмотрим наиболее распространенные версии. Первая операционная система для персональных компьютеров, MS-DOS, появилась в 1981 г. Все программы MS-DOS хранятся на магнитных дисках, поэтому она называется дисковой операционной системой (Disk Operation System). Буквы MS являются сокращением названия фирмы-разработчика Microsoft. Начиная с 1996 г. MS-DOS распространяется в виде Windows 95 – 32-разрядной многозадачной и многопоточной операционной системы с графическим интерфейсом и расширенными сетевыми возможностями. Операционная система Windows 98, преемница Windows 95, объединена с браузером Internet Explorer посредством интерфейса, выполненного в виде Web-браузера и оснащенного кнопками "Назад" и "Вперед" для перехода на предыдущую и последующую Web-страницы. Кроме этого, в ней улучшена совместимость с новыми аппаратными средствами компьютера, она одинаково удобна как для использования на настольных, так и на портативных компьютерах. Windows NT — 32-разрядная ОС со встроенной сетевой поддержкой и развитыми многопользовательскими средствами. Она предоставляет пользователям истинную многозадачность, многопроцессорную поддержку, секретность, защиту данных и многое другое. Эта операционная система очень удобна для пользователей, работающих в рамках локальной сети, для коллективных пользователей, особенно для групп, работающих над большими проектами и обменивающихся данными. Windows 2000 Professional — операционная система нового поколения для делового использования на самых разнообразных компьютерах — от портативных до серверов. Эта ОС является наилучшей для ведения коммерческой деятельности в Интернете. Она объединяет присущую Windows 98 простоту использования в Интернете с надежностью, экономичностью и безопасностью Windows NT. На сегодняшний день широкое распространение уже получила следующая версия — Windows XP. Об операционной системе Windows XP будет рассказано несколько позже. Перспективной является многопользовательская и многозадачная операционная система Unix, созданная корпорацией Bell Laboratory. Данная ОС реализует принцип открытых систем и широкие возможности по комплексированию в составе одной вычислительной системы разнородных технических и программных средств. Unix получила распространение для суперкомпьютеров, рабочих станций и профессиональных компьютеров, имеет большое количество версий, разработанных различными фирмами. Согласно прогнозу, объем мирового рынка вычислительных систем, базирующихся на ОС Unix, будет существенно возрастать, особенно с переходом к сетевым технологиям.


19. Понятие «программный продукт». Характеристики программных продуктов. Программные и правовые методы защиты программных продуктов.

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

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

Последний пункт имеет непосредственное отношение к технической документации.

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

· алгоритмическая сложность (логика алгоритмов обработки информации);

· состав и глубина проработки реализованных функций обработки;

· полнота и системность функций обработки;

· объем файлов программ;

· требования к операционной системе и техническим средствам обработки со стороны программного средства;

· объем дисковой памяти;

· размер оперативной памяти для запуска программ;

· тип процессора;

· версия операционной системы;

· наличие вычислительной сети и др.

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

· насколько хорошо (просто, надежно, эффективно) можно использовать программный продукт;

· насколько легко эксплуатировать программный продукт;

· можно ли использовать программный продукт при изменении условия применения и др.

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

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

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: