Алгоритмизация и программирование

Понятие и свойства алгоритма. Принципы алгоритмизации. Особенности составления и решения блок-схем. Современные языки программирования: Python, JavaScript, C#, Swift, Java. Программирование на языке Pascal в среде Lazarus. Структурное программирование.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 30.04.2020
Размер файла 15,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Алгоритмизация и программирование

Введение

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

Слово алгоритм происходит от algoritmi, являющегося латинской транслитерацией арабского имени математика IX века аль-Хорезми. Благодаря латинскому переводу трактата аль-Хорезми европейцы в XII веке познакомились с позиционной системой счисления, и в средневековой Европе алгоритмом называлась десятичная позиционная система счисления и правила счета в ней.

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

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

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

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

- вычислительные - как правило, работают с простыми видами данных (числа, векторы, матрицы), но зато процесс вычисления может быть длинным и сложным;

- информационные - напротив, реализуют сравнительно небольшие процедуры обработки (например, поиск элементов, удовлетворяющих определенному признаку), но для больших объемов информации;

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

Алгоритм - это точная инструкция. Однако не всякая инструкция есть алгоритм. Инструкция становится алгоритмом только тогда, когда она обладает следующими свойствами.

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

Различные определения алгоритма в явной или неявной форме содержат следующий ряд общих требований:

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

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

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

Завершаемость (конечность) -- в более узком понимании алгоритма как математической функции, при правильно заданных начальных данных алгоритм должен завершать работу и выдавать результат за определённое число шагов. Дональд Кнут процедуру, которая удовлетворяет всем свойствам алгоритма, кроме, возможно, конечности, называет методом вычисления (англ. computational method). Однако довольно часто определение алгоритма не включает завершаемость за конечное время. В этом случае алгоритм (метод вычисления) определяет частичную функцию[en]. Для вероятностных алгоритмов завешаемость как правило означает, что алгоритм выдаёт результат с вероятностью 1 для любых правильно заданных начальных данных (то есть может в некоторых случаях не завершиться, но вероятность этого должна быть равна 0).

Массовость (универсальность) алгоритм должен быть применим к разным наборам начальных данных.

Результативность -- завершение алгоритма определёнными результатами.

Алгоритмизация

Алгоритмизация -- процесс составления алгоритмов для решения поставленных прикладных задач.

2.Составление и решение блок-схем

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

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

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

Описание задания

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

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

Описание блок-схемы алгоритма для задания

Блок схема начинается с блока №1 <Начало>.

1.Следующий блок№2 - это инициализация данных для работы программы по умолчанию. Переменная n - номер члена ряда: начальное значение =1.

2.Блок <Ввода> №3 значений Е, Х.

3.Блок №4: инициализация вспомогательной переменной Z значением Z=X+1.

4.Блок №5 <Ветвления> проверяет значение переменной Е на корректность согласно условию Е<1. Если условие выполняется, то осуществляется переход к блоку №6. Иначе - к блоку №9 (вывод сообщения о неверно введённых данных).

5.Блок <ветвления> №6 проверяет значение модуля второго члена ряда Х на условие |Х|> E. Если условие выполняется, то осуществляется переход к блоку №8 (инициализация переменной R значением Х). Иначе - к блоку №7 (вывод суммы Z=1).

6.Блок №10 (модификация) - проверка условия |R|>E. Если условие выполняется, то осуществляется переход к блоку №11 (инициализация переменных Z, n, R). Иначе осуществляется переход к блоку №12 (вывод результата Z).

7.Блок №13 - конец программы.

3.Современные языки программирования

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

Существуют два типа программ - посредников, работающих с исходными текстами:

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

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

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

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

Python

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

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

Стоит упомянуть, что на данный момент актуальны две версии: Python 2 и Python 3. Вам за основу лучше брать последнюю, так как поддержка Python 2, а значит -- и активная разработка на ней, прекратится совсем скоро.

Кстати, для тех, кто решился изучать Python, мы подготовили список полезных и практичных советов.

JavaScript

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

Объем кода практически не изменился, зато снизилась читаемость. После изучения Python вы без проблем разберетесь, как работает структура return, и оцените удобство именно такого способа записи.

Кроме того, экосистема JavaScript богаче, чем Python. Она предлагает обилие сред разработки, редакторов кода, фреймворков, библиотек. Это еще один шаг к пониманию, как работает «взрослое» программирование.

В целом, JavaScript незначительно уступает Python по спектру решаемых задач, но его возможности «глубже». Знание этого языка пригодится при разработке программ на любых платформах.

C#

Если вы не определились с языком, значит еще не решили, что вас привлекает: веб, мобильные или десктопные приложения. Тогда ваше решение -- C#, универсальный инструмент для всех направлений разработки. Чтобы создавать десктопные приложения, понадобится Visual Studio (версия Community -- бесплатная). Для мира мобильных устройств установите Xamarian, а для веба пригодится ASP.NET.

Код вновь незначительно усложнился -- это связано с использованием ключевого слова static. На этом этапе вы познакомитесь с грамотным использованием памяти, областями видимости данных и полностью погрузитесь в ООП. Ну, если не успели при знакомстве с JavaScript.

Swift

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

Четвертая версия Swift вышла в 2017 году: она содержит множество улучшений для работы со строками, коллекциями; возросла надежность и многое другое. Это уже не «сырой» язык, а классический представитель верхушки рейтинга TIOBE с планомерным развитием. С помощью Swift вы можете создавать приложения для всех продуктов Apple: macOS, watchOS, iOS и любой новой системы, если она появится.

Java

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

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

4.Программирование на языке Pascal в среде Lazarus

Object Pascal (Объектный Паскаль) -язык программирования, разработанный в фирме Apple Computer в 1986 году группой Ларри Теслера, который консультировался с Никлаусом Виртом. Произошел от более ранней объектно-ориентированной версии языка Паскаль. Lazarus является кроссплатформенной средой разработки, т.е. позволяет создавать программы в графическом окружении, практически неизменном, для широкого класса операционных систем: Linux, FreeBSD, Mac OS X, Microsoft Windows, Android. Для создания исполняемой программы достаточно снова собрать ее в соответствующей операционной системе. Является практически единственной простой средой разработки, в которой можно создавать приложения программистам знакомым с Delphi. Среда разработки базируется на библиотеке визуальных компонентов Lazarus Component Library(LCL), которая содержит достаточное число компонент, позволяющих создавать формы при помощи визуального проектирования графического интерфейса пользователя (GUI, англ. graphical user interface).В Lazarus также возможно разрабатывать консольные приложения и динамически подгружаемые библиотеки: в Windows dynamic-link library, или DLL; в OS X -библиотеки dylib (dynamic shared library); в Linux -библиотеки .so (shared object library). Динамические библиотеки используются для разработки других программ. Языки интерфейса: русский, английский и еще 36 языков (апрель2013 года).

5.Структурное программирование

Структурное программирование -- парадигма программирования, в основе которой лежит представление программы в виде иерархической структуры блоков. Концептуализирована в конце 1960-х -- начале 1970-х годов на фундаменте теоремы Бёма -- Якопини, математически обосновывающей возможность структурной организации программ, и работы Эдсгера Дейкстры «О вреде оператора goto» (англ. Goto considered harmful).

В соответствии с парадигмой, любая программа, которая строится без использования оператора goto, состоит из трёх базовых управляющих конструкций: последовательность, ветвление, цикл; кроме того, используются подпрограммы. При этом разработка программы ведётся пошагово, методом «сверху вниз».

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

Методология структурной разработки программного обеспечения была признана «самой сильной формализацией 70-х годов». По мнению Бертрана Мейера, «Революция во взглядах на программирование, начатая Дейкстрой, привела к движению, известному как структурное программирование, которое предложило систематический, рациональный подход к конструированию программ. Структурное программирование стало основой всего, что сделано в методологии программирования, включая и объектное программирование».

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

алгоритм блок схема программирование

1 Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн. Алгоритмы: построение и анализ, 3-е издание = Introduction to Algorithms, Third Edition. -- М.: «Вильямс», 2013. -- 1328 с. -- ISBN 978-5-8459-1794-2.

2 Дональд Кнут. Искусство программирования, том 1. Основные алгоритмы = The Art of Computer Programming, vol. 1. Fundamental Algorithms. -- 3-е изд.. -- М.: «Вильямс», 2006. -- С. 720. -- ISBN 0-201-89683-4.

3 Томас Х. Кормен. Алгоритмы: вводный курс = Algorithms Unlocked. -- М.: «Вильямс», 2014. -- 208 с. -- ISBN 978-5-8459-1868-0.

4 Игошин В. И. Математическая логика и теория алгоритмов. -- 2-е изд., стер.. -- М.: ИЦ «Академия», 2008. -- 448 с. -- ISBN 5-7695-1363-2.

5 Гавриков М. М., Иванченко А. Н., Гринченков Д. В. Теоретические основы разработки и реализации языков программирования. -- КноРус, 2013. -- 178 с. -- ISBN 978-5-406-02430-0.

6 Криницкий Н. А., Миронов Г. А., Фролов Г. Д. Программирование. -- ГИФМЛ, 1963. -- 384 с.

7 Братчиков И. Л. Синтаксис языков программирования. -- Наука, 1975. -- 230 с.

8 Лавров С. С. Основные понятия и конструкции языков программирования. -- Финансы и статистика, 1982. -- 80 с.

9 Christopher Strachey. Fundamental Concepts in Programming Languages ( (англ.)). -- 1967. Архивировано 12 августа 2017 года.

10 Повторно опубликовано: Christopher Strachey. Fundamental Concepts in Programming Languages ( (англ.)) // Higher-Order and Symbolic Computation. -- 2000. -- Т. 13. -- С. 11--49. -- doi:10.1023/A:1010000313106.

11 Программирование на языке Pascal в среде Lazarus: учебное пособие для студентов и преподавателей вузов/ сост. :В.Б.Ефлов, Ю.В.Никонова; -Петрозаводск: Изд-во ПетрГУ, 2013. -53c

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.