logo search
Основы автоматизации производства

4. Основы программирования

Процесс подготовки и решения задачи на ЭВМ складывается из разработки алгоритма решения задачи и программирования.

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

Существуют две формы описания алгоритма: описание на естественном языке и представление в структурной схеме.

Описание на естественном языке представляет собой развернутую форму записи всех операций. Поясним представление алгоритма в такой форме на примере вычисления Y = (4Х2 – 6)/(3Х + 6) при X = 3.

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

1. Возвести X в степень 2.

2. Результат действия 1 (X2) умножить на 4.

3. От результата действия 2 (4Х2) отнять число 6.

4. Умножить X на число 3.

5. К результату действия 4 (3Х) прибавить число 6.

6. Результат действия 3 разделить на результат действия 5.

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

Поясним представление алгоритма в форме структурной схемы на примере составления программы вычисления корней квадратного уравнения Х2 + bХ + с = 0. Корни этого уравнения находят по формуле

Порядок вычислений зависит от знака подкоренного выражения D.

Рис. 152. Графическое обозначение блоков программы:

1 – вычислительный блок (обработка числового материала команд и т. д.); 2 – подготовительный блок (операции ввода и вывода информации); 3 – указание последовательности выполнения операций; 4 – логический блок (организация разветвления программ); 5 – стандартный блок (выполнение подпрограмм); 6 – конвектор (связь блоков); 7 – операция начала и конца программы

Процесс решения задачи можно расчленить на четыре этапа:

1. Вычисление D = (b2/4) – с.

2. Проверка условий D ≥ 0 или D < 0.

3. Вычисление действительных корней, если D ≥ 0.

4. Вычисление мнимых корней, если D < 0.

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

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

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

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

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

Первый уровень – машинные коды. Это внутренний язык команд конкретной ЭВМ. Он содержит полный перечень операций, выполняемых ЭВМ с их числовыми кодами.

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

Рис. 153. Структурная схема вычисления корней квадратного уравнения

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

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

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

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

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

При разработке систем математического обеспечения автоматическая система управления производством (технологическими процессами) часто используются международные алгоритмические и проблемно-ориентировочные языки АЛГОЛ-60, КОБОЛ, ФОРТРАН, PL/1 и др.

АЛГОЛ-60 – алгоритмический язык предназначен для описания вычислительных процессов в форме, используемой в научно-технических расчетах. АЛГОЛ-60 характеризуется значительным сходством с математическим языком.

КОБОЛ – проблемно-оперативный язык, разработанный в США как средство программирования для обработки данных в коммерческих задачах, связанных с обработкой больших массивов и информации, а также для обработки информации при последовательно повторяющихся операциях. В словарном запасе этого языка много слов, собственно бесполезных для программирования, но облегчающих чтение программы.

ФОРТРАН – один из наиболее простых и широко применяемых алгоритмических языков. Язык разработан для использования в области научных и технических исследований. Он успешно применяется и для решения информационно-логических и экономических задач. ФОРТРАН используется во многих типах машин.

PL/1 – универсальный язык программирования научно-технических, коммерческих задач и задач управления производством. PL/1 объединяет возможности языков высшего уровня, таких как АЛГОЛ, КОБОЛ, ФОРТРАН, причем возможности этих языков еще больше расширены. Язык построен по блочной структуре, поэтому для различных применений могут быть образованы его подмножества. Он является многоцелевым и достаточно сложным. Однако программисту не обязательно все знать о нем, т. е. для программирования отдельных задач используется только часть средств языка.

Программное обеспечение микроЭВМ по многим характеристикам напоминает программное обеспечение обычных ЭВМ и мини-ЭВМ, но имеет специфические особенности, которые обусловлены их архитектурой.

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

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

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

Программирование на языке высокого уровня применяется для крупных программ. Такой язык легко адаптируется к различным ЭВМ.

На базе языка PL/1 для микроЭВМ разработан специальный язык PL/М, представляющий собой проблемно-ориентированный язык для описания прикладных задач и программирования микропроцессоров.

Контрольные вопросы и задания

1. Чем отличаются позиционные системы счисления от непозициоиных?

2. Дайте сравнительную оценку систем счисления, применяемых в ЭВМ.

3. Какие достоинства и недостатки характерны для двоичной системы счисления?

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

5. Преобразуйте число 13510 по схеме (135)10 → (135)2 → (135)8 → (135)18 → (135)10.

6. Дайте сравнительную оценку естественной и нормальной формам представления чисел.

7. Как производится нормализация числа?

8. Представьте десятично число 99 в двоичной системе счисления в прямом, обратном и дополнительном кодах.

9. Что называется алгоритмом решения задачи? Расскажите о формах записи алгоритмов.

10. Дайте сравнительную оценку уровней различия языков программирования.

11. Перечислите основные современные проблемно-ориентированные языки и дайте им характеристики.

12. На каких языках осуществляется программирование микроЭВМ?

13. Какие языки используют для программирования управляющих ЭВМ?