Файл: Основы программирования на языке Pascal ( Машинный язык ).pdf

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

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

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

Добавлен: 01.04.2023

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

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

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

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

1.5. Автокоды

Автокод – это язык, который включает в себя все возможности программирования «языка символического кодирования», это выполняется путём введения макрокоманд - это уже называется автокод.

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

  1. Расстановка
  2. Генерирование.

Содержание «Остов» так называемые серии команд, исполняют функцию требуемую макрокомандой. Макрокоманды необходимы для передачи параметров, которые путём подстановки в «остов», преобразуют её в программу для ЭВМ.

Специальные программы помогают анализировать макрокоманду, эти программы выявляют последовательность команд и выполняют работу по их реализации. [22, с.27]

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

Например язык программирования «Ассемблер» является автокодом. Программы в которых выполняются функции сервиса программируются на «Ассемблере».

1.6.Макрос

Этот язык используют для замены последовательности символов, для того чтобы описать очерёдность выполнения действий ЭВМ в более сжатую форму, это и называется «Макрос».

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

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


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

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

При записи данных, интерпретатор сканирует каждый сектор программы после чего можно будет произвести чтение, и выполнение действий. [13, с.10]

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

Макрос может работать как с программами так и с данными.

1.7. Диалоговые языки

С появлением новых как технических так и механических возможностей, программистам была поставлена задача создать программу которая обеспечила бы, оперативное взаимодействие между человеком и ЭВМ, позднее было дано название «Диалоговые языки».

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

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

Для того чтобы произвести взаимодействие с пользователем, нужно было сохранение в памяти ЭМВ копии программы даже уже после того как была получена программа. После изменений в программе с помощью диалоговых окон и специальных таблиц, устанавливало взаимосвязь с объектом программы. Это и помогало выполнять изменения в корне программы. [17, с.27]

Допустим одним из диалоговых языков является «Бэйсик».

Бэйсик обозначает все данные подобно в математике, подставляя выражения и символы.

1.8. Непроцедурные языки

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

Всё это позволяет чётко описывать как задачу так и все действия по её решению, тем самым таблицы получают функцию определения, и после чего видно какие действия могут быть выполнены в первую очередь, перед тем как преступить к выполнению. [23, с.27]


Компилятором является код который переводит всё в машинный язык. Суть компилятора заключается в том, что он читает язык программирования и переводит его на понятный машине язык. Строение программы выполняет компилятор. Если программировать на языке Турбо Бэйсик,то нужно следить за периодом прогона и периодом компилирования. Чем интерпретируемые программы, компилируемые работают от 4 до 10 раз быстрее. А если вы хорошо постараетесь то работоспособность программ увеличится в 100 раз. А так как большинство программистов работают лишь над вознёй с файлами, то не могут продемонстрировать работоспособность программы.

Табличные методы могут осваиваться без всякого труда вне зависимости от того по какой профессии вы работаете. [12, с.27]

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

1.9. Универсальные языки

Создание универсальных языков, было необходимо для того, чтобы ими могли пользоваться не только программисты, но и широкий круг пользователей, а конкретно для коммерческих, научных и т.д. Первый универсальный язык, был написано фирмой IBM, позднее он получил название Пл/1. После него был написан язык Алгол-68, он является вторым по мощности. Этот язык позволяет работать как с числами, так и с плавающей запятой. В языке Пл/1 более развитая система которая без труда управляет форматами, что позволяет работать с полями переменной длины, с данными структуры, а так же для использования каналов связи. [3, с.27]

Компилирование в Пл/1 происходит в автоматическом режиме. В этом языке собраны многие возможности, которые есть и в таких программах как Алгола, Кобола, Фортрана, но в отличии от них в Пл/1 можно выполнить статистическое распределение памяти.

Глава 2. Линейные списочные структуры

Динамическая память – это оперативная память компьютера, предоставляемая программе при ее работе. Размер динамической памяти может изменяться, потому как динамическая память может обрабатывать массивы данных больших размеров. Динамические, переменные вызываются по адресу. Чтобы вызвать ячейку, обращение идёт по имени. Переменные устанавливаются комприлятором в памяти и подставляют свои адреса ячеек и команды. С помощью указателя осуществляется обращение к динамическим переменным. Указатель – это переменная, которая в качестве своего значения содержит адрес байта памяти. [25, с.27]


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

Выделить память под динамическую переменную;

Инициализировать указатель;

Освободить память после использования динамической переменной. (см. рис. 1).

Рис.1.Освобождение памяти

Линейные списки относятся к динамическим структурам данных. Объекты данных могут обладать динамической структурой, если его размер изменяется в процессе выполнения программы. [24, с.36]

Операции которые мы можем делать с линейными списками:

  1. Получение доступа к списку, для анализа и изменения.
  2. Для включения нового узла.
  3. Исключение какого либо узла.
  4. Возможность объединения списка.
  5. Разбиение линейных списков.
  6. Возможность копировать линейные списки.
  7. Определение узлов в списке.
  8. Сортировка узлов в каком либо порядке.
  9. Нахождение какого либо узла.

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

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

Все элементы списка хранят:

  1. Хранит информацию любого вида.
  2. Указывает следующий элемент списка.

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

Рис.2.Данные динамической структуры

2.1. Однонаправленный и двунаправленный список

Этот метод заключается в том, что его изменение может проходит на любом промежутке списка. [20, с.27]

Направление однонаправленного списка отличает от двунаправленного в том, их различие только в связи. Получается, что в однонаправленном изменения в списке можно производить только в одном направлении, а уже в двунаправленном в любом порядке. [15, с.27]


Первый рисунок является однонаправленным, а второй двунаправленным (см. рис 3-4).

5

4

2

1

3

Рис.3. Двунаправленный список

Рис.4. Двунаправленный список

5

3

1

2

4

В двунаправленном списке, как ниже показано на рисунке, осуществляется удаление и добавление элемента. Когда добавляется новый элемент между 2 и 3 , связь которая была теряется в участке 3 и 4 (см. рис 5).

4

N

5

3

1

2

Рис.5.Связь между 3 и 4

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

2.2. Очередь

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

Рис.6.Очередеь

Начало

Второй

Третий

Конец

Исключить

Включить

Само правило этого списка, подобно живой очереди, первым стоял, первым будешь обслужен, а уже при добавлении будет увеличиться число в списке. У любой очереди имеется как голова, так и хвост. Те элементы, которые добавляются в список оказываются в хвосте, а объект удаляемый из этой очереди находится в голове списка. [18, с.27]

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

Рис.7.Новый элемент очереди

Начало

Второй

Третий

Конец

Новый

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