Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Алгоритмизация как обязательный этап разработки программы (Современное понятие программного обеспечения)

Содержание:

ВВЕДЕНИЕ

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

Цель данной работы исследование алгоритмизации, как обязательного этапа разработки программ. Объектом исследования данной работы является разработка программного обеспечения, а предметом исследования алгоритмизация.

В рамках работы должны быть решены следующие задачи:

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

Методами исследования являются изучение теоретических вопросов, сравнение, анализ.

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

ГЛАВА 1. ИССЛЕДОВАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ

1.1 Современное понятие программного обеспечения

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

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

Утилитарные программы ("программы для себя") предназначены для удовлетворения нужд их разработчиков. Чаще всего утилитарные программы выполняют роль сервиса в технологии обработки данных либо являются программами решения функциональных задач, не предназначенных для широкого распространения. [2, 13]

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

Свободное программное обеспечение, несколько более новая и не связанная с этим концепция, — это программное обеспечение, которое можно свободно использовать, модифицировать и распространять только с одним ограничением: любая распространяемая версия программного обеспечения должна распространяться с оригинальными условиями бесплатного использования, модификации и распространения (известны как авторское право). В отличие от бесплатного программного обеспечения, бесплатное программное обеспечение может распространяться за плату. Бесплатное программное обеспечение может быть более ограниченным в возможностях, чем свободное программное обеспечение. [5, 11]

Условно-бесплатная программа — это программное обеспечение, которое распространяется бесплатно на пробной основе с пониманием того, что пользователь может нуждаться или захотеть заплатить за него позже. Некоторые разработчики программного обеспечения предлагают условно-бесплатную версию своей программы со встроенным сроком действия (по истечении 30 дней пользователь больше не может получить доступ к программе). Другое условно-бесплатное программное обеспечение предлагается с определенными возможностями. [13]

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

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

Дополнительной и трудно классифицируемой категорией программного обеспечения является утилита, которая представляет собой небольшую полезную программу с ограниченными возможностями. Некоторые утилиты поставляются с операционными системами. Как и приложения, утилиты, как правило, устанавливаются отдельно и могут использоваться независимо от остальной части операционной системы. Например, апплеты — это небольшие приложения, которые иногда поставляются с операционной системой как «аксессуары». Они также могут быть созданы независимо с использованием Java или других языков программирования. [10]

Программное обеспечение может быть приобретено как условно-бесплатное программное обеспечение (обычно предназначенное для продажи после пробного периода), бесплатно (условно-бесплатное программное обеспечение с некоторыми отключенными возможностями), бесплатное ПО (бесплатное программное обеспечение, но с ограничениями авторского права), общедоступное программное обеспечение (бесплатное без ограничений) и открытое источник (программное обеспечение, в котором предоставляется исходный код, и пользователи соглашаются не ограничивать распространение улучшений). [3, 13]

Программное обеспечение часто упаковывается на CD-ROM. Сегодня многие приобретенные программы, условно-бесплатные и бесплатные программы загружаются через Интернет. Новая тенденция — это программное обеспечение, доступное для использования на другом сайте, известном как поставщик услуг приложений.

Некоторые общие виды прикладного программного обеспечения включают в себя:

  • программное обеспечение для повышения производительности, которое включает в себя текстовые процессоры, электронные таблицы и инструменты для использования большинством пользователей компьютеров;
  • программное обеспечение для презентаций;
  • графическое программное обеспечение для графических дизайнеров;
  • CAD/CAM программное обеспечение;
  • специализированные научные приложения;
  • рыночное или отраслевое программное обеспечение (например, для банковской, страховой, розничной и производственной сред). [2, 13]

1.2. Понятие алгоритма

Алгоритм — это набор инструкций, четко описывающих порядок действий исполнителя для достижения результата решения задачи за конечное число действий. [17]

Свойства алгоритмов:

  1. Дискретность (алгоритм должен представлять решение задачи как последовательность некоторых простых шагов);
  2. Детерминированность (алгоритм должен в каждый конкретный момент времени однозначно определять следующий шаг исходя из состояния системы);
  3. Понятность (алгоритм должен включать только те команды, которые исполнитель может выполнить);
  4. Конечность (алгоритм при корректных входных данных должен заканчиваться и выдавать результат);
  5. Универсальность (алгоритм должен быть применим к разным наборам входных данных);
  6. Результативность (алгоритм должен завершаться с каким-то результатом).

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

Изучение алгоритмов началось с математики. Несомненно, что поиск алгоритмов был важнейшей задачей для математиков задолго до разработки современных компьютеров. Цель состояла в том, чтобы найти набор инструкций, которые бы описывали как решить все проблемы определенного типа. Один из самых хорошо известных примеров таких ранних исследований – алгоритм деления столбиком. Другой пример – Алгоритм Евклида для поиска наибольшего общего делителя двух положительных чисел, описанный греческим математиком Евклидом около 300 лет до н. э. [16]

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

Наибольшее распространение благодаря своей наглядности получил графический (блок-схемный) способ записи алгоритмов.

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

При всем многообразии алгоритмов решения задач в них можно выделить три основных вида вычислительных процессов:

  • линейный;
  • ветвящийся;
  • циклический.

Линейным называется такой вычислительный процесс, при котором все этапы решения задачи выполняются в естественном порядке следования записи этих этапов.

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

Циклом называется многократно повторяемый участок вычислений. Вычислительный процесс, содержащий один или несколько циклов, называется циклическим. По количеству выполнения циклы делятся на циклы с определенным (заранее заданным) числом повторений и циклы с неопределенным числом повторений. Количество повторений последних зависит от соблюдения некоторого условия, задающего необходимость выполнения цикла. При этом условие может проверяться в начале цикла — тогда речь идет о цикле с предусловием, или в конце — тогда это цикл с постусловием. [5, 17]

Алгоритмизация, как процесс преобразования исходной информации к алгоритмическому виду, включает в себя:

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

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

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

Цикл от ветвления отличается тем, что он предусматривает возможность перехода (возвращения) к одной из предыдущих операций.

Смешанный порядок в алгоритме предполагает наличие участков с неодинаковым типом последовательностей операций. Смешанный порядок выполнения операций всегда присутствует в сложных алгоритмах и программах. Даже в «примере с задвижками» часто приходится менять порядок действий в зависимости от складывающейся походу дела ситуации и обстановки. Например, менять порядок открытия задвижек из-за неисправности одной из них (ветвление) или повторно включать подремонтированный насос, повторяя порядок открытия-закрытия задвижек (цикл), и т.п. [8, 17]

Еще один пример: разработка алгоритмов для АСУ ТП. Там сплошная алгоритмизации. Есть, например, методики расчета ТЭП (технико-экономических показателей), но их надо в процессе алгоритмизации переложить на язык блок-схем, затем программистам предстоит переложить порядок действий с языка блок-схем (алгоритмов) на алгоритмический язык, понятный ЭВМ.

Пошаговая программа «подключения потока» («on-line»)

Шаг 1

Подать команду на открытие:

  • клапана на общем входе в предварительный фильтр очистки B10/20-AA500;
  • клапана F10/20-AA503 на входе в ФСД для нагнетания давления.

Проверить условия:

  • открыт клапан на входе в предварительный фильтр очистки B10/20-AA500;
  • открыт клапан F10/20-AA503 на входе в ФСД для нагнетания давления;
  • давление F10/20-CP001 в ФСД больше 0,50 бар.

При выполнении выше перечисленных условий перейти к выполнению шага 2, иначе – действия прекратить.

Шаг 2

Подать команду на открытие:

  • основного клапана F10/20-AA502 на входе в ФСД;
  • клапана F10/20-AA515 отбора проб на выходе ФСД.
  • клапана F10/20-AA516 на выходе из ФСД на ВСАС рециркуляционых насосов промывки.

Подать команду на закрытие:

  • клапана F10/20-AA503 нагнетания давления в ФСД.

Подать команду на включение:

  • насоса рециркуляционой промывки F31/32-AP001.

Проверить условия:

  • открыт основной клапан F10/20-AA502 на входе в ФСД;
  • открыт клапан F10/20-AA515 отбора проб на выходе из ФСД.
  • открыт клапан F10/20-AA516 на выходе из ФСД на всас рециркуляционых насосов промывки;
  • закрыт клапан F10/20-AA503 нагнетания давления в ФСД;
  • включен насос рециркуляционой промывки F31/32-AP001;
  • перепад давления на ФСД ниже 3 бар (F10/20-CP001, F10/20-CP002);
  • расход на рециркуляционную промывку выше 100000 кг/ч, (100м3/ч) (F00-CF001).

При выполнении выше перечисленных условий перейти к выполнению шага 3. И так далее...

Обычные технологические инструкции часто являются предварительным этапом алгоритмизации. В исполнительных инструкциях объектами являются физические объекты – например, задвижки и клапана, а действиями являются физические действия – например, открыть и закрыть. В вычислительных инструкциях объектами являются математические объекты – например, формулы, обрабатываемы значения или таблицы значений, а действиями являются математические действия – например, вычисления по формулам и обработка таблиц. [16] Кроме этого, в инструкциях могут быть проверки выполнения логических условий: например, достигнуто ли нужное давление в емкости или не является ли делитель нулем.

Таким образом, в данной главе были рассмотрены такие понятия, как «программное обеспечение» и «алгоритм».

ГЛАВА 2. ПРИЕМЫ АЛГОРИТМИЗАЦИИ

2.1 Алгоритмические конструкции

Для записи алгоритмов существуют разные способы: текстово-формульная запись, блок-схема, машина Тьюринга, машина Поста, программа на алгоритмическом языке и др. Каждый алгоритм записывается в системе команд исполнителя. Вне зависимости от выбранной формы записи элементарные шаги алгоритма объединяются в алгоритмические конструкции (структуры): последовательные, ветвящиеся, циклические, вспомогательные алгоритмы и рекурсивные. В 1966 году Бом и Джакопини доказали, что для записи любого сколь угодно сложного алгоритма достаточно трех основных алгоритмических конструкций: последовательных, ветвящихся, циклических. [3, 8]

Алгоритм P (или его часть) реализован через последовательную алгоритмическую конструкцию (следование), если каждый шаг алгоритма выполняется один раз, причем после каждого i-го шага выполняется (i + 1)-й шаг, если i-й шаг — не конец алгоритма. Такой алгоритм или часть алгоритма еще называют линейным. [17]

Пример 1. Линейным является алгоритм перевоза через реку Волка, Козы и Капусты, при условии, что в лодке можно перевозить только один из указанных объектов, а на берегу вместе не могут находиться Коза и Волк, а также Коза и Капуста:

  • перевези Козу;
  • вернись на исходный берег;
  • перевези Волка;
  • вернись на исходный берег с Козой;
  • перевези Капусту;
  • вернись на исходный берег;
  • перевези Козу.

Алгоритм P реализован с использованием ветвящейся алгоритмической конструкции (ветвления), если на каком-либо шаге последовательное выполнение алгоритма прерывается, и выбор следующего шага определяется входными данными алгоритма. Ветвление задает выполнение либо одной, либо другой группы операторов в зависимости от выполнения какого-либо условия, затем исполнение алгоритма выходит на общее продолжение. Для конкретных входных данных ветвящаяся алгоритмическая конструкция сводится к последовательной алгоритмической конструкции. Ветвление бывает полным и неполным. В случае неполного ветвления при невыполнении условия никакие действия не выполняются. [17]

Пример 2. Запишем в словесной форме алгоритм решения уравнения ax2 + bx + c = 0, где a, b, c — произвольные действительные числа, а x — искомая величина. Если a 0, то для нахождения корней используются известные формулы, при этом существование корней зависит от знака дискриминанта квадратного уравнения. Если a = 0, то уравнение становится линейным. Однако при b = 0 оно вырождается в равенство c = 0. Поэтому, если c действительно равно 0, то все действительные числа являются корнями такого уравнения, в противном случае — корней нет. Ниже приведена блок-схема данного алгоритма.

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

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

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

Следование не имеет специальной формы записи, а выражается в том, что входящие в него шаги записываются последовательно, а управление после выполнения очередного шага этой конструкции переходит к следующему. В текстовой форме записи — это просто последовательная запись пунктов, соответствующих шагам алгоритма. В блок-схемах — это последовательная запись блоков действия, соединенных стрелкой, направленной от предыдущего блока к следующему. На процедурном языке программирования данная конструкция выражается просто последовательной записью инструкций (операторов языка программирования). [15]

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

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

2.2 Практические приемы алгоритмизации

Рассмотрим практические примеры, на примере следующей программы: пользовательское приложение «RSS Viewer», с помощью которого пользователь сможет загружать актуальные новости из различных новостных RSS источников.

Перечислим возможные состояния программы:

  1. Исходное состояние.
  2. Основное состояние.
  3. Открыть файл.
  4. Сохранить Файл.
  5. Печать.
  6. Просмотреть справку.
  7. О программе.
  8. Состояние завершения.

На рисунке 1 показана диаграмма переходов состояния программы.

Functional diagram

Рисунок 1 – Диаграмма переходов состояния

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

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

Usage Diagram

Рисунок 2 – Диаграмма вариантов использования

Разделим программу на предметные области (классы). В данных классах при необходимости выделим атрибуты. В качестве атрибутов представим некоторые, существенные с точки зрения решаемой задачи характеристики объектов.

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

На рисунке 3 представлена концептуальная модель данной системы.

Conceptual Diagram (1)

Рисунок 3 – Концептуальная модель предметной области

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

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

Всё выше описанное можно представить в виде общего алгоритма программы, которое можно изобразить в виде блок-схемы (рисунок 4)

Block scheme

Рисунок 4 – Блок схема алгоритма

Рассмотрим примеры создания простейших алгоритмов на примере некоторых программ на Python.

1. Программа на Python для поиска факториала числа.

Факториал числа является произведением всех целых чисел от 1 до этого числа. Например, факториал 6 (обозначается как 6!) Равен 1 * 2 * 3 * 4 * 5 * 6 = 720. Факториал не определен для отрицательных чисел, а факторный нуль - один, 0! = 1. Подробный код программы показан в листинг кода 1.

Листинг кода 1.

# Программа для поиска факториала числа

# Ввод числа

num = int(input("Введите число: "))

factorial = 1

# проверка числа

if num < 0:

print("Факториала не существует для отрицательных чисел")

elif num == 0:

print("Факториал нуля равен 1")

else:

for i in range(1,num + 1):

factorial = factorial*i

print("Факториал",num," = ",factorial)

Алгоритм программы заключается в том, что здесь число, в котором находится факториал, хранится в num и мы проверяем, является ли число отрицательным, нулевым или положительным с использованием if...elif...else оператора. Если число положительное, мы используем for цикл и range() функцию для вычисления факториала.

2. Программа Python для поиска второго по величине числа в списке.

Программа берет список и печатает второе по величине число в списке.

Подробный код программы показан листингом кода 2.

Листинг кода 2.

a=[]

n=int(input("Введите количество чисел:"))

for i in range(1,n+1):

b=int(input("Введите элемент:"))

a.append(b)

a.sort()

print("Второй по величине элемент:",a[n-2])

Выполняемые шаги:

1. Берется количество элементов и сохраняется в переменной.

2. Далее перебираются элементы списка один за другим.

3. Сортируется список в порядке возрастания.

4. Выводится второй последний элемент списка.

5. Выход.

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

3. Программа на Python для определения размера (разрешения) изображения.

JPEG означает Joint Photographic Experts Group. Это одна из наиболее широко используемых методов сжатия изображений.

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

Например, заголовки jpeg содержат информацию, такую ​​как высота, ширина, количество цветов (оттенки серого или RGB) и т.д. В этой программе мы находим разрешение изображения jpeg, читающего эти заголовки, без использования какой-либо внешней библиотеки. Подробный код программы показан листингом кода 3.

Листинг кода 3.

def jpeg_res(filename):

""""This function prints the resolution of the jpeg image file passed into it"""

# открыть изображение для чтения в двоичном режиме

with open(filename,'rb') as img_file:

# высота изображения (в 2 байтах) находится на 164-й позиции

  img_file.seek(163)

# чтение 2 байт

a = img_file.read(2)

# рассчет высоты

height = (a[0] << 8) + a[1]

# следующие 2 байта

a = img_file.read(2)

# рассчёт ширины

width = (a[0] << 8) + a[1]

print("Разрешение изображения",width,"x",height)

jpeg_res("img.jpg")

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

Это программа верна только для стандарта JPEG File Interchange Format (JFIF). Если изображение кодируется с использованием другого стандарта (например, EXIF), код не будет работать.

В данной главе были рассмотрены практические примеры разработки различных алгоритмов.

ЗАКЛЮЧЕНИЕ

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

В рамках данной работы были решены следующие задачи:

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

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

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

СПИСОК ЛИТЕРАТУРЫ

  1. Алиев, Ю.А. Практикум по алгоритмизации и программированию на языке Паскаль/ Ю.А. Алиев. – В. – Питер: 2007. – 527с
  2. Буч Гради Объектно-ориентированное проектирование с примерами применения. — Конкорд, 2014. — 519 с.
  3. Васильев А. Java. Объектно-ориентированное программирование. — Питер, 2013. — 397 с.
  4. Дронов В. HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. — БХВ-Петербург, 2013. — 408 с.
  5. Дэвид Харрис, Сара Л. Харрис Цифровая схемотехника и архитектура компьютера. — ДМК Пресс, 2018. — 794 с.
  6. Левчук Е. А. Технологии организации, хранения и обработки данных. — Вышэйшая школа, 2016. — 241 с.
  7. Лутц М. Изучаем Python. 4-е издание. — Символ-Плюс, 2017. — 1272 с.
  8. Мартин Роберт Идеальный программист. Как стать профессионалом разработки ПО. — Питер, 2011. — 240 с.
  9. Орлов С. А. Теория и практика языков программирования. — Питер, 2017. — 688 с.
  10. Щеглов К.А., Щеглов А.Ю. Защита информации: основы теории. Учебник для бакалавриата и магистратуры. — Юрайт, 2017. — 310 с.
  11. Paul Barry Head First Python: A Brain-Friendly Guide. — O'Reilly Media, 2016. — 624 p.
  12. Luciano Ramalho Fluent Python: Clear, Concise, and Effective Programming. — O'Reilly Media, 2015. — 792 p.
  13. Программирование [Электронный ресурс] Понятие «программирование». Режим доступа:
    https://sites.google.com/site/wwwprogrammirovaniecom/home/ponatie Дата обращения (21.01.2020)
  14. Сайт с образовательными программами [Электронный ресурс] История программирования и алгоритмических языков перспективы развития средств автоматизации. Режим доступа: http://emirb.org/zadacha-avtomatizacii-sostoit-v-osushestvlenii-avtomaticheskog.html?page=9 Дата обращения (21.01.2020)
  15. Life-Prog [Электронный ресурс] Основные понятия. Программный продукт Режим доступа: https://life-prog.ru/2_13687_osnovnie-ponyatiya-programmniy-produkt.html Дата обращения (21.01.2020)
  16. Алгоритмизация и программирование [Электронный ресурс] Алгоритмические конструкции. Режим доступа: https://xn----7sbbfb7a7aej.xn--p1ai/informatika_kabinet/programm/programm_03.html Дата обращения (21.01.2020)
  17. Itandlife [Электронный ресурс] Роль алгоритмов в информационных технологиях. Режим доступа: http://itandlife.ru/science/computer-science/rol-algoritmov-v-informacionnyx-texnologiyax/ Дата обращения (21.01.2020)