Файл: Алгоритмизация и программирование.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 06.11.2023

Просмотров: 29

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Цикл с постусловием (цикл-до)

Цикл с постусловием начинается с выполнения тела цикла и лишь затем проверяется условие. Тело цикла обязательно выполнится хотя бы один раз. Если условие ложно, то повторяется выполнение тела цикла, если истинно – то осуществляется выход из цикла. Поэтому данное условие называют условием прекращения цикла. Чтобы не было зацикливания, в теле цикла необходимо изменять значение параметра цикла так, чтобы за конечное количество «шагов» условие стало истинным.

Блок-схема цикла с постусловием



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

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

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

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

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

В начале 50-х годов появился первый язык ассемблера. К концу 50-х годов начали появляться языки программирования более высокого уровня, такие как Lisp, Fortran, ALGOL. В них уже не было точного соответствия между языковыми конструкциями и машинными командами. Преобразование строк исходного кода в последовательности двоичных команд осуществлялось компилятором. Со временем их число пополнилось языками PL /1, Pascal, C, C++, Java. Все они менее эффективно используют аппаратуру по сравнению с языками ассемблера, но позволяет быстрее создавать приложения. В результате им удалось практически полностью вытеснить языки ассемблера при создании крупных приложении.

Языки программирования высокого уровня

Неструктурные (BASIC-первый по популярности, Fortran-

1-ый компилятор)

Структурные (Pascal, Algol-комрпилятор)

логические (Prolog, Simula)

функциональные (Lisp, ЛОГО)

объектно-ориентированные (Smalltalk, C++, Object Pascal, Delphi, Java)

Языки программирования баз данных (SQL, Oracle)

Языки программирования для Интернет (HTML, Perl, Хml)


Технологии программирования

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

  1. неструктурный;

  2. структурный;

  3. объектно-ориентированный;

  4. логический;

  5. функциональный.


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

Структурное программирование – процесс разработки алгоритмов с помощью блок-схем.

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

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


Принципы структурного программирования были реализованы в языке Алгол, но наибольшую популярность завоевал язык Паскаль, созданный в 1970 швейцарским ученым Н. Виртом. Паскаль получил широчайшее распространение и может считаться образцовым языком программирования, наиболее популярным и сейчас (например, в версии Delphi фирмы Imprise).

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

БРАТЬЯ ИМЕЮТ ОДНОГО ОТЦА

ДЖОН - ОТЕЦ ДЖЕКА

МАЙК - БРАТ ДЖЕКА

то система логического программирования должна сделать вывод:

ДЖОН - ОТЕЦ МАЙКА.

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

Объектно-ориентированное программирование

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

Объектно-ориентированное (ОО) программирование, разработанное в середине 70-х гг. Керниганом и Риччи и реализованное в ОО-версиях языков Си и Паскаль, представляет собой отображение объектов реального мира, их свойств (атрибутов) и связей между ними при помощи специальных структур данных. Структурное программирование подразумевает наличие ряда встроенных структур данных: целых, вещественных и строковых переменных, массивов, записей - при помощи которых и производится отображение свойств объектов реального мира. При объектно-ориентированном подходе для объекта создается своя структура данных (класс), содержащая как свойства объекта (поля), так и процедуры для управления объектом (методы).

Например, рассмотрим простейший объект - точку на экране. Она имеет как минимум три поля (координаты и цвет) и методы вроде "ChangeColor" (поменять цвет), "MoveXY" (переместиться в точку х, у) и т.д. Объектно-ориентированный подход является в настоящее время доминирующим и позволяет сократить время разработки и увеличить надежность больших проектов. Однако программы в данном стиле отличаются громоздким синтаксисом; в целом идеология объектно-ориентированного подхода весьма неочевидна, часто воспринимается с трудом (особенно это характерно для языка Си, который и в своем первоначальном виде отличается крайне неудобочитаемым синтаксисом), и переход к его использованию труден или невозможен для большого числа программистов.


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

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

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

В большинстве случаев методы базового класса у классов-наследников приходится переопределять – объект класса «кошка» выполняет метод «идти» совсем не так, как объект класса «амеба». Такое свойство объектов переопределять методы наследуемого класса и корректно их использовать называется полиморфизмом.

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

     НТМL (Нуреr Техt Маrkup Lanquage) является стан­дартным языком, предназначенным для создания гипер­текстовых документов в среде WWW. НТМL - документы могут просматриваться различными браузерами (специальными программами, интерпретирующими такого рода гипертекстовые документы), наиболее известным из которых является Internet Explorer. В отличие от документов, например текстового процессора Microsoft Word, документы в формате HTML не организованы по принципу WYSIWYG (What You See Is You Get) — что видишь, то и получишь [при выводе на печать или монитор]. Когда документ создан с использованием НТМL, браузер должен интерпретировать HTML для выделения различных элементов документа и их первичной обработки с целью дальнейшего отображения в виде, задуманном автором. Данная технология не является исключительной особенностью HTML, она, например, используется в языке, предназначенном для верстки математических текстов ТеХ (LaТеХ), автором которого является Д. Кнут. Использование HTML позволяет форматировать документы для их представления с использованием заголовков, шрифтов, линий и других стандартных элементов на любой системе, предназначенной для их просмотра.