Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Презентации 2часть / Лекция_32_33_Теория_Алгоритмов.ppt
Скачиваний:
29
Добавлен:
11.05.2015
Размер:
177.66 Кб
Скачать

Проблема универсального языка программирования

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

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

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

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

07/02/19

31

Универсальный язык программирования

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

Ниже мы рассмотрим такой язык

07/02/19

32

Описание универсального языка программирования

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

Построим простейший язык, который будет содержать необходимый набор данных и операторов

07/02/19

33

Даные

Современные языки высокого уровня оперируют с разнообразными структурами данных: числа, массивы, строки, ......, объекты.

Однако после всех трансляций, процессор манипулирует битовыми комбинациями (01).

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

{01101010000101010000010}

имя переменной: a, b, c, …обозначает такую комбинацию

a= {0110101000010}

b= {0110010}

07/02/19

34

Операторы

3 оператора присваивания:

cleare <имя>; очистка строки

incr <имя>; увеличить на 1 (101 110)

decr <имя>; уменьшить на 1

(если перемен. = 0, то

дальнейшего изменения

не будет)

07/02/19

35

Операторы

Один оператор цикла:

While <имя> not 0 do

<повторяемые операторы>

...

...

end;

Это знакомый нам оператор While с одним условием имя 0.

07/02/19

36

Как программировать на этом языке

Присвоить переменной х значение 3 (011):

cleare x;

incr x, incr x, incr x;

Присвоить z значение х (z:=x):

clear z;

While x not 0 do;

Incr z;

decr x;

end;

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

07/02/19

37

Примеры программирования

Присвоить z значение х не уничтожая х:

clear y; clear z;

While x not 0 do; присвоить у значение х

Incr y;

decr x;

end;

While y not 0 do; присвоить z и x значение y

Incr z;

Incr x;

decr y;

end;

07/02/19

38

Дальнейшее развитие

Этот набор команд можно обозначить далее

<имя1> := <имя2>;

В качестве упражнения попробуйте смоделировать

If x not 0 then <S1> else <S2>;

Оказывается этот простейший язык является универсальным (самым мощным) ,

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

07/02/19

39

Проблема

универсальной вычислительной машины

Теперь познакомимся с предельными возможностями вычислительных машин.

Что собой представляет универсальная ВМ, т.е. такая, которая выполнит любую программу, написанную на универсальном языке?

07/02/19

40