Файл: Классификация языков программирования высокого уровня (Машинный язык).pdf

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

Категория: Курсовая работа

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

Добавлен: 31.03.2023

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

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

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

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

Первым языком программирования высокого уровня считается компьютерный язык Plankalkül разработанный немецким инженером Конрадом Цузе ещё в период 1942-1946г. Однако транслятора для него не существовало до 2000 г. Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа), он же ПП-1, успешно испытанный в 1954 г. Транслятор ПП-2 (1955 г., 4-й в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур, а транслятор ПП для ЭВМ Стрела-4 уже содержал и компоновщик (linker) из модулей. Однако, широкое применение высокоуровневых языков началось с возникновением Фортрана и созданием компилятора для этого языка.

Ранние языки высокого уровня были довольно специализированными: Фортран (FORmula TRANslation) был предназначен для использования в научных целях, КОБОЛ (Common business Orientated Language) – для использования в мире бизнеса. Появление в 50-х гг. языка BASIC (Beginners All-purpose Symbolic Instruction Code) закрыло существовавший в языках высокого уровня пробел между языками для науки и для бизнеса. BASIC в равной степени годится для любых задач и в то же время достаточно прост для изучения[10].

Тем временем были изобретены новые методы программирования, которые привели к новой волне языков высокого уровня. Одним из этих языков, выдержавших проверку временем, является основанный на методах структурного программирования Pascal[10].

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

Так, высокоуровневые языки стремятся не только облегчить решение сложных программных задач, но и упростить портирование программного обеспечения. Использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами и оборудованием, в то время как их исходный код остаётся, в идеале, неизменным[10].

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


Примеры: C, C++, Visual Basic, Java, Python, PHP, Ruby, Perl, Delphi (Pascal). Языкам высокого уровня свойственно умение работать с комплексными структурами данных. В большинство из них интегрирована поддержка строковых типов, объектов, операций файлового ввода-вывода и т. п.

К языкам высокого уровня относят:

  1. проблемно-ориентированные (имеют средства для организа ции структур данных, описания алгоритмов и ориентированы на решение задач определенного класса):  Фортран, Алгол, Кобол, Ада и др.;
  2. универсальные: Алгол 68,  PL/1,  Паскаль, QBasic, C, C++, С# и дp.;
  3. языки  проектирования  программ  (системы программирова ния) – в настоящее время имеют самый высокий уровень аб стракции, они расширяются не как языки описания процесса обработки  данных,   а   как   средства описания  задач:   Visual Basic, Delphi, MS Visual C++, Borland C++  Builder и др.;
  4. языки гипертекстовой разметки, такие, как HTML – набор кодов, который вводится в документ для обозначения, напри мер, связей между его частями. Команды HTML обеспечива ют соединение сайтов и главных страниц WWW (Всемирной паутины сети Интернет) при помощи гиперссылок и указывают Web-браузеру (программе навигации) способ расположе ния массивов данных;
  5. языки описания сценариев – макросы, в которых объедине ны отдельные команды, управляющие средой в соответствии с их списком – программой: (например состоящие из имено ванных последовательностей совокупности указанных нажа тий клавиш при работе с пакетом Microsoft Office);
  6. языки   моделирования   систем:   например,   GPSS   (General Purpose Simulating System) позволяет автоматизировать при моделировании   процесс   программирования  моделей.   Язык построен в предположении, что моделью сложной дискретной системы является описание ее элементов и логических правил их взаимодействия. Для определенного класса моделируемых систем выделяют небольшой набор абстрактных элементов объектов. Набор логических правил ограничен и может быть описан небольшим числом стандартных операций. Комплекс программ, описывающих функционирование объектов и выполняющих логические операции, является основой для создания программной модели систем данного класса[10].

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

        Алгоритм - это одно из самых широких понятий математики и информатики.

Более 1000 лет назад в Багдаде, крупном научном центре Востока, жил абд Джафар Мужамед ибн Муса Аль-Хорезми. Ему принадлежит книга по математике, которая в течение нескольких столетий пользовалась широкой популярностью. В ней Аль-Хорезми сформулировал правила выполнения четырёх арифметических действий над многозначными числами.


При переводе на латынь имя автора переделали в Algorithmi (Алгоритми). В книге Аль-Хорезми приводились методы решения разных задач. Ссылаясь на них, европейцы упоминали: "Так говорил Алгоритми..." Со временем методы решения задач стали называться алгоритмами. В дальнейшем алгоритмом стали называть описание любой последовательности действий, которую следует выполнить для решения задачи. 

Алгоритм – строго упорядоченная последовательность действий, направленная на выполнение поставленной задачи.

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

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

  1. узнать необходимый телефонный номер;
  2. поднять трубку;
  3. набрать номер;
  4. дождаться ответа абонента.

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

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

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

Разветвляющийся алгоритм

Алгоритмы исполняют в естественном порядке: команда за командой (смотрите повторение). Однако жизнь весьма разнообразна. А цели все же хочется достичь.

Вот и ученик, собираясь в школу, продумывает следующие действия:

  1. Если чувствует себя хорошо, то собирается в школу
  2. Иначе - остается дома[14].

Заметим, что алгоритм требует либо одного действия, либо двух. А именно: вначале измерить температуру, а уж затем, в зависимости от результатов выполнять или не выполнять следующее действие. Такой алгоритм называется разветвляющимся, а именно: алгоритм, который выполняется в зависимости от условия, т.е. от вопроса на который можно ответить "да" или "нет", т.е. условие может быть истинным (да), или ложным (нет). Алгоритм ветвления, как и другие алгоритмы, должны обладать следующими свойствами:

  1. Дикретность, т.е. все решение разбивается на простейшие шаги.
  2. Понятность, алгоритм должен быть понятен исполнителю.
  3. Точность, не должно быть неясностей и двусмысленностей.
  4. Массовость, с помощью одного и того же алгоритма можно решить множество задач.
  5. Результативность (или конечность) состоит в том, что алгоритм должен приводить к решению задачи за конечное число шагов[14].

Полная форма.

Полная форма - это форма записи разветвляющегося алгоритма, в которой предусмотрены команды в ветви "да" и в ветви "нет" (Рис.1). 

если-то-иначе

Пример

Рис.1. Форма записи разветвляющегося алгоритма (Полная форма).

Происходит проверка условия.

  • Если а>b, то происходит присваивание к переменной "а" значение "а*2", а к переменной "b", значение "1".
  • Иначе, т.е. если а<=b, происходит присваивание переменной "b" значение "2*b".

Неполная форма

      Неполная форма - это форма записи разветвляющегося алгоритма, в которой предусмотрены команды только в одной ветви (Рис.2).

если-то

Пример

Рис.2. Форма записи разветвляющегося алгоритма (Неполная форма).

Происходит проверка условия.

  1. Если x>0, то переменной "y" присваивается значение "sin(x)"
  2. Иначе, т.е. если x<=0, то действия ветви "да" пропускаются.

Разветвляющийся алгоритм можно записать несколькими способами:

  1. Словесный.
  2. В виде блок-схем (графический).
  3. На языке программирования.

1. Словесный способ

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

Например:

  1. Задать два числа.
  2. Если числа равны, то взять любое из них в качестве ответа и остановиться, иначе продолжить выполнение алгоритма.
  3. Определить большее из чисел.
  4. Заменить большее из чисел разностью большего и меньшего из чисел.
  5. Повторить алгоритм с числа два.

Словесный способ не имеет широкого распространения, т.к. такие описания:

  1. строго не формализуемы;
  2. страдают многословностью записей;
  3. допускают неоднозначность толкования отдельных предписаний.

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

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

Графический способ представления разветвляющихся алгоритмов является более компактным и наглядным по сравнению со словесным (Рис.3).


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

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

Обозначение и пример заполнения

Пояснение

Пуск — остановка

Начало, конец алгоритма, вход и выход в подпрограмму

Ввод — вывод

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

Процесс (действие)

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

Решение (условие)

Проверка условий

Рис.3. Графический способ представления разветвляющихся алгоритмов.

Блок "решение" используется для обозначения переходов управления по условию. В каждом блоке "решение" должны быть указаны вопрос, условие или сравнение, которые он определяет. 

Линейный алгоритм

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

Например, алгоритм решения математической задачи: найдите гипотенузу, если известны катеты (Рис.4).

Алгоритм (словесный способ записи):

  1. Возвести первый катет в квадрат;
  2. Возвести второй катет в квадрат;
  3. Сложить результаты действий 1 и 2;
  4. Вычислить квадратный корень из результата 3-го действия и принять его за значение гипотенузы.

Программный способ записи:

10 INPUT a,b
20 x=a^2
30 y=b^2
40 z=x+y
50 w=SQR(z)
60 PRINT w
70 END

Рис.4. Алгоритм решения математической задачи (Пример).