У вас вопросы?
У нас ответы:) SamZan.net

тематической формализация задачи

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 29.12.2024

Этапы решения задач с помощью ЭВМ

Решения задачи обработки информации с помощью ЭВМ складывается из следующих этапов:

  1.  Корректная постановка задачи (формулировка цели, концептуальная, содержательная постановка задачи, определение существенных параметров – полного набора исходных данных, необходимых для получения решения).
  2.  Выбор метода решения задачи (построение компьютерной модели, чаще математической - формализация задачи).
  3.  Построение алгоритма реализации выбранного метода решения.
  4.  Кодирование алгоритма для выполнения решения с помощью ЭВМ (написание программы).
  5.  Перевод программы в программу в машинных кодах (трансляция)
  6.  Отладка и тестирование программы.
  7.  Выполнение расчетов созданной программой и анализ полученных результатов

МЕТОДЫ ПОСТРОЕНИЯ АЛГОРИТМОВ

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

Алгоритм должен обладать четырьмя необходимыми свойствами, которые называются основными свойствами алгоритма:

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

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

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

Способы изображения алгоритмов

Существует три способа изображения (записи) алгоритмов.

  1.  Словесный (вербальный) –  на естественном (человеческом) языке.

Достоинства этого способа – простота описания (не требуются специальные знания), понятность алгоритма в случаях не длинных описаний.

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

  1.  На алгоритмическом языке – на формальном (искусственном) однозначном языке.

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

Ниже приведен пример записи алгоритма нахождения наибольшего общего делителя для двух натуральных чисел на языке А. П. Ершова. Его идея основана на том свойстве, что если M>N, то НОД(М, N) = НОД(М-N,N). Другой факт, лежащий в основе алгоритма, тривиален — НОД(М, М) = М.

алг нахождение наибольшего общего делителя (нат M, N, нат НОД)

 арг M, N

 рез НОД

нач   пока MN

 нц

 если M>N

 то M:=M-N

 иначе N:=N-M

 все

 кц

 НОД:=M

кон

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

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

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

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

  1.  Графический способ.

Рассмотрим подробнее графический способ, как наиболее часто используемый.

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

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

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

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

Основные элементы блок-схем    Таблица 1.

Название символа

Символ

Отображаемая функция

Терминатор

Начало/конец схемы алгоритма

Процесс

Вычислительное действие или последовательность вычислительных действий

Предопределенный процесс (подпрограмма)

Вычисления по стандартно подпрограмме или по подпрограмме пользователя

Данные

Общее обозначение ввода или вывода данных (вне зависимости от физического носителя)

Вывод данных, носителем которых служит документ (печатающее устройство)

Решение

Выбор направления выполнения алгоритма в зависимости от некоторого условия (условий)

Граница цикла

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

Модификатор (заголовок цикла)

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

Линии

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

Внутристраничный соединитель

n

Указание связи между прерванными линиями потока информации в пределах одной страницы. n - номер соединителя на странице

Межстраничный соединитель

N

n

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

N - номер страницы, n - номер соединителя на странице

Правила построения блок-схем

В соответствии с Единой системой программной документации (ЕСПД) блок-схемы алгоритмов строятся в соответствии с ГОСТ 12701-90 «Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения».

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

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

A = B

B = C

B = C

A = B

а)   б)

a

b

  Рис.1

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

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

5

5

Рис.2.

При изображении блоков в алгоритме следует придерживаться следующих правил:

  1.  всякий блок кроме "начала" и "модификатора" имеет только один вход;
  2.  всякий блок, кроме "решения", "модификатора", "переключателя" и "конца" имеет только один выход;
  3.  "решение" имеет один вход и два выхода (по истинности и ложности условия в момент проверки);
  4.  "модификатор" имеет основной вход, основной выход, внутренний вход и выход;
  5.  "переключатель" имеет один вход и несколько выходов.

Линии передачи управления могут соединяться (сливаться) но не могут разъединяться или пересекаться. Для исключения пересечения используются соединители. На линиях могут ставиться стрелки, хотя направления сверху вниз и слева направо обычно не помечаются.

При выполнении схем алгоритмов необходимо выдерживать минимальное расстояние 3 мм между параллельными линиями потоков и 5 мм между остальными символами. В блоках приняты размеры а=10, 15, 20 мм; b=1,5a (см. рис. 1).. Если необходимо увеличить размер схемы, то допускается увеличивать а на число, кратное 5.

Каждую блок-схему сопровождает краткое описание, для чего используют комментарии. Последние на блок-схемах в соответствии с ГОСТом изображаются, как показано на рис. 3.

Здесь производится чтение метеорологических характеристик (U,V,W,T,P) для приземного слоя воздуха из файла WANGDIN.BSF базы данных ВНИГМИ МЦД

Рис.3. Сопроводительные пояснения в блок-схемах алгоритмов.

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

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

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

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

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ЭВМ

1. КЛАССИФИКАЦИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (ПО)

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

Программное обеспечение ЭВМ

Системное ПО

Инструментальное ПО

Прикладное ПО

Программы пользователя

В состав системного ПО входят: операционная система, различные сервисные программы (программы контроля, диагностирования и тестирования; файловые оболочки: Norton Commander, Windows Commander, FAR; программы-архиваторы; программы-антивирусы; программы восстановления информации, форматирования и защиты данных; коммуникационные программы; программы для использования различных устройств).

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

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

2. Языки программирования

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

1. Классификация

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

Машинный язык - конечный набор команд в двоичных кодах, которые может выполнять процессор ЭВМ. Каждый новый тип процессора - это одновременно и новый машинный язык. В программах на языке машинных команд (ЯМК) данные обозначаются их адресами в памяти машины, выполняемые операции – числовыми кодами, о расположении команд и данных в памяти ЭВМ должен заботиться программист. Надо ли говорить о том насколько программирование на ЯМК было трудоемким процессом? Но так работали программисты только на самых первых ламповых ЭВМ первого поколения, так как эти ЭВМ понимали только язык машинных команд. Первые языки программирования, отличные от ЯМК появились на машинах первого поколения и назывались Автокодами. Работая на Автокоде программист освобожден распределять память под программу и данные, а также от работы с адресами ячеек. Начиная с ЭВМ третьего поколения такие языки стали называть машинно-зависимыми языками, или Ассемблерами. В настоящее время на машинных языках программы не пишут. Это можно делать на машинно-зависимых или машинно-независимых языках, применяя системы программирования. Если хотят максимально использовать возможности и особенности машины при решении задачи используют машинно-зависимый язык. Если желательно программу создавать для широкого круга ЭВМ, ее пишут на машинно-независимом языке. Примерами реализаций машинно-зависимых языков для ПЭВМ являются макроассемблеры MASM (Microsoft) и TASM (Borland).

Строение ассемблеров опирается на архитектуру и наборы команд каждого типа ЭВМ.

Из машинно-независимых языков, реализованных на ПЭВМ можно отметить Бейсик, Паскаль, Си, Фортран-77, Пролог, Лисп, Смолток, Модула-2, Ада. Наибольшее распространение получили первые 4 из этого списка.

По другой классификации все языки программирования принято разделять на языки низкого уровня и языки высокого уровня. Понятие уровня языка программирования связано со степенью его удаленности от языка процессора ЭВМ (языка машинных команд) и приближенности к естественному человеческому языку, к формальному языку предметной области (чаще всего математики). Чем выше уровень, тем ближе к человеку и дальше от ЭВМ. ЯМК – это язык самого низкого уровня. Ассемблер тоже язык низкого уровня. В настоящее время на Ассемблере программируют только системные программисты и используется этот язык довольно редко. Большинство программистов работают на языках высокого уровня, которых сейчас насчитывается великое множество (Паскаль, Фортран, Си, Си++, Visual C, Visual Basic, VBA.и др.)

Однако, чем понятнее программа для человека, тем непонятнее для ЭВМ.

В конечном итоге любая программа должна быть переведена на язык машинных команд (ЯМК), если мы хотим получить решение с помощью машины. Программы-переводчики с Ассемблера и языков программирования высокого уровня называются трансляторами, а процесс перевода программы на ЯМК называется трансляцией. Транслятор – обязательный элемент любой системы программирования. Первые системы программирования включали в себя только транслятор. Затем к нему стали добавляться различные сервисные средства: текстовые редакторы, отладчики, системы обслуживания программных библиотек, средства организации “дружественного” интерфейса с пользователем.

Существует два способа трансляции:

  1.  интерпретация
  2.  компиляция.

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

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

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

Из-за указанных причин (экономии во времени выполнения и в размере памяти, так как если программа откомпилирована вся, то компилятор более не нужен для ее выполнения) большие программы всегда компилируются (Паскаль, Си, Фортран и др.). Язык Бейсик часто реализуется через интерпретатор..

2. История развития

Развитие языков программирования определялось в первую очередь изменениями потребностей пользователей (что выражалось в распределении затрат на разные этапы решения задачи с помощью ЭВМ).

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

С конца 50-х годов возрастание размеров программ, написанных на машинно-зависимых языках приводит к большим затратам на отладку программ. Для сокращения текстов программ и повышения их наглядности постепенно происходит переход на языки 2-го поколения, больше подходящие для описания решения задачи, а не ориентированные на возможности ЭВМ. Такие языки получают название "алгоритмических". В качестве примеров можно назвать ФОРТРАН (название произошло от "Формульного Транслятора"), АЛГОЛ-60, ЛИСП и др. Первую версию языка ФОРТРАН разработал Дж.Бэкус и фирма IBM в 1956, а первый транслятор с ФОРТРАНа начал работать в 1958 году. В 1962 году сформировался вариант языка с обозначением ФОРТРАН-IV, долгое время являвшимся самым распространенным языком в мире.

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

С середины 60-х годов происходит интеграция накопленного "языкового" опыта в универсальных языках высокого уровня (относящихся к 3-му поколению) , таких как ПЛ/1, АЛГОЛ-68, СИМУЛА. В них сделана попытка объединить возможности всех ранее разработанных языков с целью перехода к единому языку программирования. На этих языках, казалось, можно было написать любую программу. Например, в язык ПЛ/1 были включены практически все используемые в прикладных задачах простые типы данных и возможности построения любых составных конструкций.

Хотя этот язык сильно критиковали за сложность, вседозволенность, следует отметить, что за 25 лет с момента его создания он практически не изменялся (в отличие от, например, ФОРТРАНА). Системные программисты, а также прикладные программисты, работающие в новых областях науки активно использовали этот язык, но ему не удалось вытеснить старые языки ФОРТРАН или КОБОЛ из-за огромного объема ранее разработанных программных продуктов, библиотек подпрограмм и из-за консерватизма непрофессиональных программистов.

Важнейшей особенностью этого периода являлось появление очень больших по объему программ, создаваемых коллективами авторов. Написание программ становилось менее сложным делом, чем их отладка и документальное сопровождение. Всякая модификация программ приводила к появлению все новых ошибок. Поэтому, несмотря на интенсивное развитие инструментальных средств, производительность труда программистов с начала 70-х годов перестала расти. Срывались сроки разработки, программы становились дороже и ненадежнее. Увеличение ресурсов (денег, людей) не приводило к ускорению работы. Эта ситуация получила название "кризиса программирования". Г. Буч пишет об этом периоде: “Наше неумение создавать сложные программные системы проявляется в проектах, которые выходят за рамки установленных сроков и бюджетов и к тому же не соответствуют начальным требованиям. Мы часто называем это кризисом программного обеспечения”.

Преодоление кризиса началось с работы Боэма "Программная инженерия", вышедшая в 1976 году, в которой было показано, что основные затраты на программный продукт приходятся на сопровождение, а не на разработку. Поэтому важнейшими аспектами становятся технология программирования и "прозрачность" ПО. На смену императивному программированию пришли технологии структурного и модульного программирования. На смену "хитроумным" программам написанным на громоздких языках приходят простые понятные библиотеки подпрограмм, часто в виде исходных текстов на таких языках как Паскаль, Си, Бейсик. Этому способствует переход на ПЭВМ, на которых просто невозможно реализовать трансляторы с мощных универсальных языков ПЛ или АЛГОЛ-68.

Языками программирования 80-х годов стали языки, реализованные на персональных ЭВМ. К ним в первую очередь относятся Си, Паскаль, Форт, Бейсик, ФОРТРАН-77. Все они относятся к классическим алгоритмическим проблемно-ориентированным операторным языкам, хотя и сильно отличаются друг от друга. Эти языки программирования относят к 4 поколению.

Язык Си был разработан Д.Ритчи в 1972 году и предназначался в первую очередь для переноса программ с одной ЭВМ на другую. Он стал активно применяться после того, как очередная версия операционной системы UNIX была написана на Си. В этом языке сочетаются возможности языка высокого уровня с доступностью адресации аппаратных средств ЭВМ и отсутствием многих ограничений, присущих другим языкам, поэтому он является в настоящее время основным языком системного программирования.

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

Язык ФОРТ разрабатывался исключительно для микро-ЭВМ и ориентирован на создание очень эффективных программ в условиях малых аппаратных ресурсов. Система ФОРТ очень компактна, например интерпретатор и словарь системных слов занимают всего 8 Кбайт. Особенностью языка является хранение операндов в стеке, а сама программа имеет вид строк в обратной польской записи. Программист может любую программную строку обозначить заданным символом, который затем может использовать наравне с системными операторами. Это позволяет на основе языка ФОРТ строить специализированные языки для конкретных приложений, поэтому его называют гибким расширяемым языком. Недостатком является непривычная форма записи программ и сложность использования в больших программных комплексах.

ФОРТРАН-77 представляет версию расширенного языка ФОРТРАН, широко используемый в научных расчетах. До языка ФОРТРАН-77 наиболее распространенным языком был ФОРТРАН-66, чаще называемый ФОРТРАН-IV. Следующим годом пересмотра стандарта ФОРТРАН стал 1986 год, хотя внесенные изменения оказались уже не столь существенными и ФОРТРАН-86 не сумел вытеснить предыдущую версию.

Язык БЕЙСИК был первоначально разработан группой студентов Дартмутского колледжа в 1963 году для обучения программированию. Широкое распространение получил с появлением ПЭВМ, так как на первых машинах являлся единственным алгоритмическим языком программирования. До последнего времени являлся очень простым языком с ограниченными возможностями. Реализовывался в форме интерпретатора, работающего в интерактивном режиме. К сожалению, не имел и практически не имеет стандарта, поэтому на разных ЭВМ имеет различные диалекты, часто несовместимые (и, соответственно, не переносимые с машины на машину). В настоящее время на IBM-совместимых ПЭВМ есть версии БЕЙСИК с мощными оболочками, включающими интерпретаторы, компилятор, отладчики и прочие составляющие системы программирования.

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

Современные языки программирования, хотя и выросли в недрах языков четвертого поколения (и часто имеют то же название, но более старшую версию), опираются на совершенно иной подход к программированию. В их основе лежит подход к обрабатываемым данным как основе программы. В центр ставятся понятия объектов, объединенных в классы данных, а программа представляет собой описания связей между объектами. Такой подход называется "объектным программированием". В качестве примеров языков этого поколения можно назвать Турбо Паскаль 7-ой версии, С++, Ада, Модула 2, Турбо Пролог.

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

Отладка

Проектирование

Кодирование

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

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

Ошибки могут быть «языковые» и  алгоритмические.

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

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

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

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




1. обрезан дистанция в углах составит 660 м
2. тематика Молодых Ауд
3. а Источники формы выражения административного права
4. вариант ответа 1
5. Волинському Мати її письменниця Олена Пчілка і батько юрист багато уваги приділяли гуманітарній осві
6. ДУБНА Календарный план РАБОЧАЯ ПРОГРАММА Утверждаю учебнометодическая карта дисциплины
7. Эмиль или о воспитании вызвала гнев церкви который преследовал Руссо вплоть до его смерти 6
8. статья След статья Нынешний валютнофинансовый кризис в Восточной Азии является следствием того что в пос
9. Тема 16 УПРАВЛЕНИЕ ИНВЕСТИЦИОННОЙ ДЕЯТЕЛЬНОСТЬЮ ФИРМЫ2 После изучения этой главы вы сможете получить пре.html
10. Курсовая работа- Психологический портрет врача
11. Формирование звукопроизношения у детей старшего дошкольного возраста с патологией зрения в процессе игровой деятельности
12. А Леонтьев Ключевые идеи Л
13. 65 Психология Юдина Надежда Александровна КУРСОВАЯ РАБОТА Социальнопсихологическа
14. Функции денег и их эволюция Функции денег это действия которые они осуществляют в рыночной экономике
15. Практикум по межкультурной коммуникации 4-6 Анатомия центральной нервной системы зачё
16. Тема- Информационные системы Понятие информационной системы
17. В.Д. ЕГОРОВ КТО ОНИ ~ ВОЗМОЖНЫЕ МИГРАНТЫ ИЗ МОРДОВИИ ЕГОРОВ Владимир Дмитриевич ~ кандидат
18. Детские страхи и методы борьбы с неврозом страха
19. р ~ выпускник Государственного центрального Ордена Ленина Института физической культуры 1970
20. тема устойчивых связей которые возникают между элементами социальной системы в ходе взаимодействия