Оглавление
Введение
Глава1. Алгоритм и его свойства. Способы записи алгоритма
Глава2. Классификация алгоритмов
2.1Линейная алгоритмическая структура. Типовые примеры
2.2Разветвляющая алгоритмическая структура. Основные операторы циклов. Типовыепримеры
2.3Циклические алгоритмические структуры. Основные операторы ветвления. Типовыепримеры
Глава 3. Языки программирования
3.1Интерпретаторы
3.2Компиляторы
3.3Эволюция и классификация языков программирования
Заключение
Списоклитературы
Введение
Применение компьютерныхтехнологий в различных сферах современного общества станет значительноэффективнее, если пользователи овладеют системным подходом в решении прикладныхзадач, будут иметь представление о методах разработки алгоритмов и составленияпрограмм, а значит — о компьютеризации различных видов деятельности.
Процессорэлектронно-вычислительной машины, это чудо техники, умеет, тем не менее,выполнять лишь простейшие команды. Каким же образом компьютер решает сложнейшиезадачи обработки информации? Для решения этих задач программист долженсоставить подробное описание последовательности действий, которые необходимовыполнить центральному процессору компьютера.
Составление такогопошагового описания процесса решения задачи называется алгоритмизацией, аалгоритмом называется конечный набор правил, расположенных в определённомлогическом порядке, позволяющий исполнителю решать любую конкретную задачу изнекоторого класса однотипных задач. В разных ситуациях в роли исполнителя можетвыступать электронное или какое-либо иное устройство или человек (например,военнослужащий, охраняющий склад боеприпасов и действующий согласно алгоритмам,записанным в устав караульной службы).
Глава 1. Алгоритм и его свойства. Способы записи алгоритма
Само слово «алгоритм»возникло из названия латинского перевода книги арабского математика IX векаАль-Хорезми «Algoritmi de numero Indoru», что можно перевести как «ТрактатАль-Хорезми об арифметическом искусстве индусов». Составление алгоритмов ивопросы их существования являются предметом серьёзных математическихисследований.
Под алгоритмом понимаютнабор правил, определяющих процесс преобразования исходных данных задачи вискомый результат.
Рассмотрим примералгоритма для нахождения середины отрезка при помощи циркуля и линейки.
Алгоритм деления отрезкаАВ пополам:
1) поставить ножкуциркуля в точку А;
2) установить растворциркуля равным длине отрезка АВ;
3) провести окружность;
4) поставить ножкуциркуля в точку В;
5) провести окружность;
6) через точки пересеченияокружностей провести прямую;
7) отметить точкупересечения этой прямой с отрезком АВ.
Анализ примеров различныхалгоритмов показывает, что запись алгоритма распадается на отдельные указанияисполнителю выполнить некоторое законченное действие. Каждое такое указаниеназывается командой. Команды алгоритма выполняются одна за другой. Послекаждого шага исполнения алгоритма точно известно, какая команда должнавыполнятся следующей. Совокупность команд, которые могут быть выполненыисполнителем, называется системой команд исполнителя.
Алгоритм не только задаетпоследовательность выполнения операций при решении конкретной задачи, но идолжен обладать рядом свойств.
Свойства алгоритма:
· Однозначностьалгоритма, под которой понимается единственность толкования исполнителемправила построения действий и порядок их выполнения. Чтобы алгоритм обладалэтим свойством, он должен быть записан командами из системы команд исполнителя.
· Конечностьалгоритма – обязательность завершения каждого из действий, составляющих алгоритм,и завершимость выполнения алгоритма в целом.
· Результативностьалгоритма, предполагающая, что выполнение алгоритма должно завершитьсяполучением определённых результатов.
· Массовость, т. е.возможность применения данного алгоритма для решения целого класса задач,отвечающих общей постановке задачи. Для того чтобы алгоритм обладал свойствоммассовости, следует составлять алгоритм, используя обозначения величин иизбегая конкретных значений.
· Правильностьалгоритма, под которой понимается способность алгоритма давать правильныерезультаты решения поставленных задач.
· Эффективность –для решения задачи должны использоваться ограниченные ресурсы компьютера(процессорное время, объём оперативной памяти и т. д.).
Создание алгоритма длярешения задач какого-либо типа, его представление исполнителю в удобной длянего форме – это творческий акт.
Алгоритм может бытьпредставлен различными способами:
· на разговорном,естественном языке;
· на языкеблок-схем;
· на языкепрограммирования.
Выбор и разработкаалгоритма и численного метода решения задачи имеют важнейшее значение дляуспешной работы над программой. Тщательно проработанный алгоритм решения задачи– необходимое условие эффективной работы по составлению алгоритму.
Приведем пример записиалгоритма на естественном языке, то есть на языке человеческого общения.Требуется вычислить сумму двух чисел. Обозначим эти числа a и b. Тогдаалгоритм можно записать следующим образом:
1. Считать число a.
2. Считать число b.
3. Выполнить суммированиеc := a + b.
4. Вывести число c.
Видно, что формулировкаалгоритма не зависит от конкретных значений переменных a и b, поэтому его можноприменять для решения достаточно большого числа сходных задач, в данном случаевместе составляющих целый класс задач суммирования. Алгоритм описывает действияне над конкретными значениями, а над абстрактными объектами.
Основными объектамипрограммирования являются переменные. Переменные в программе отличаются отпеременных, используемых в записи математических формул. Несмотря на сходствотерминов, правила использования переменных в программах для компьютераотличаются от правил работы с математическими переменными. Это различиенеобходимо уяснить. В программировании переменную можно трактовать как одну илинесколько ячеек оперативной памяти компьютера, которым присвоено определённоеимя. Содержимое этих ячеек может меняться, но имя переменной остаётсянеизменным. В математике значение переменной в рамках определённой задачинеизменно, но меняется в других задачах из данного класса. Именно поэтомуконструкция а := а + 1 воспринимается программистом совершенно естественно, ауравнение a = a + 1 математик сочтёт неверным. В первом случае имеется в видувычисление суммы содержимого ячейки а и числовой константы 1 и занесениеполученного результата в ту же ячейку а. Второй случай равносилен неверномутождеству 0 = 1.
Иногда используютполуформальный язык с ограниченным словарём (часто на основе английскогоязыка), промежуточный между естественным языком и языком программирования.Такой язык называется псевдокодом. Запись алгоритма на псевдокоде называетсяструктурным планом. Псевдокод удобен тем, что позволяет программистусосредоточиться на формулировке алгоритма, не задумываясь над синтаксическимиособенностями конкретного языка программирования.
Псевдокод:
Алгоритм
Начало
Конец
Любой алгоритм может бытьпредставлен в виде последовательности действий. Под действием понимают либобазовую операцию, либо базовую структуру.
В качестве базовых операцийиспользуются:
· операцияприсваивания вида
:=
· операцияввода/вывода
ввод ( список ввода)
вывод ( список вывода).
Смысл операцииприсваивания состоит в вычислении результата выражения, стоящего справа отзнака «:=», для конкретных значений входящих в него переменных и присваиванииэтого результата переменной, стоящей слева от знака «:=», например:
D := 5
D := D+1
Min := C
При выполнении операцииввода ввод ( A, B, C) переменным изсписка ввода A, B и Cприсваиваются конкретные значения, вводимые с клавиатуры, например:
-5 7 20 {Enter}
В результате в памятиполучим:
A = -5, B = 7, C = 20.
Операция выводаосуществляет вывод значений переменных и выражений из списка вывода на экран,например:
вывод (A, B, C, 10)
На экране получим:
— 5 7 20 10
Описание алгоритмов спомощью блок-схем.
Для разработки структурыпрограммы удобнее пользоваться записью алгоритма в виде блок-схемы (ванглоязычной литературе используется термин flow-chart). Для изображения основныхалгоритмических структур и блоков на блок-схемах используют специальныеграфические символы.
Составим алгоритмвычисления квадратного корня из произвольного положительного вещественногочисла х в виде блок-схемы.
Блок-схема для решенияданного рода задач будет выглядеть следующим образом:
/>Начало
Ввод вещественного числах
Вычисление корня поформуле
Вывод результата
Конец
Глава 2. Классификация алгоритмов
Различают три типабазовых структур:
· Следование
· Развилка
· Цикл
/>
Структура Следование — одна из самых важных структур. Она означает, что два действия должны бытьвыполнены друг за другом.
Структура Развилкаобеспечивает выбор одной из двух альтернатив: если то
иначе
все
Существует сокращеннаяформа структуры Развилка, которая позволяет выполнить действие или пропуститьего:
если то
все
Обобщением структурыРазвилка является Множественный выбор:
если Var = Const1 то
если Var = Const2 то
если Var = ConstN то
все
В зависимости от значенияпеременной Var выполняется одно из указанныхдействий, например, если Var = Const3, то выполняется .
Третьей базовойструктурой является Цикл, который предусматривает повторное выполнениеопределенных действий, необходимое для большинства программ. Различаютследующие типы структур Цикл:
· цикл «от до»
· цикл «пока»
· цикл «до»
Цикл «от до» управляетповторением выполнения действия с помощью переменной цикла:
цикл от I:= N1 до N2
кц
Здесь I — переменная цикла, N1, N2 — начальное и конечное значения переменной цикла,вычисляются один раз при входе в цикл. Переменная цикла пробегает все следующиедруг за другом в порядке возрастания значения от начального до конечного.Изменение значения переменной цикла происходит автоматически после каждоговыполнения действия, указанного внутри цикла. В зависимости от соотношения N1 и N2 цикл может не выполниться ни разу (N1>N2)или выполниться (N2-N1+1) раз.
В цикле «пока» управлениевнутри цикла осуществляется с помощью логического условия:
цикл пока
кц
Выполнение действияповторяется до тех пор, пока истинно условие. Проверка условия осуществляется вначале цикла. Это означает, что действие может не выполниться ни разу. Чтобытакой цикл не был бесконечным, внутри цикла необходимо предусмотреть изменениезначения условия с истинного на ложное.
Третий тип структуры цикл«до» имеет вид:
цикл
до
кц
Как только значениеусловия становится истинным, цикл прекращается. Цикл “до“ независимо отзначения условия выполнится по меньшей мере один раз, т.к. проверка условияпроизводится после выполнения действия. Для завершения цикла необходимо внутрицикла изменить условие с ложного на истинное. Выбор структуры циклаопределяется особенностями алгоритма решения конкретной задачи.
Существенная особенностьперечисленных базовых структур состоит в том, что каждая из них имеет один входи один выход. Их можно соединять друг с другом в любой последовательности. Вкачестве действия может использоваться любая из перечисленных структур, чтообеспечивает возможность вложенности одних структур в другие.
В зависимости отприменяемых базовых структур различают следующие типы алгоритмов:
· линейные
· разветвляющиеся
· циклические.2.1 Линейнаяалгоритмическая структура. Типовые примеры
Линейным называется алгоритм, блоки которогорасположены последовательно один за другим, нет условий и повторений.
Покажем общую структурулинейного алгоритма в виде блок-схемы.
/>
Основной принциппрограммирования заключается в том, что обрабатывать можно только те данные,которые находятся в определенных областях оперативной памяти компьютера. Длятого чтобы поместить исходные данные в оперативную память используютсяоператоры ввода данных.
Для реализации процессаобработки данных используется оператор присваивания.
Результат вычисленийпомещается в область Sоперативной памяти. Чтобы вывести результат из памяти на экран мониторанеобходимо использовать оператор вывода.
Операторы ввода данных:
1. INPUT — оператор ввода данных с клавиатуры.Данные задаются в виде переменных. Переменная – это величина, значение которойможет меняться в процессе выполнения программы. Для обозначения переменнойиспользуются их имена (идентификаторы) – последовательность до 40 латинскихбукв и цифр, начинающаяся с буквы. Данные могут быть следующих основных типов:
· целые INTEGER (Y%) – 2 байта в памяти (от -32768 до 32767),
· длинные целые LONG (Y&) – 4 байта (от -231 до 231-1),
· вещественные SINGLE (Y) – 6 знаков после, -4 байта (от -3.4Е+38 до 3.4Е+38),
· вещественныеудвоенной точности DOUBLE (Y#) -16 знаков после ,– 8 байт (от-Е+308 до Е+308),
· символьные STRING (Y$) – последовательность символов до 32767 символов длиной.
Например: INPUT a,b или INPUT “Введите два числа”;a,b
2. DATA, READ – операторы ввода данных из блока памяти. Например: DATA 3,4 : READ a,b
Оператор присваивания может быть использован как для вводаданных (Например: a=3 : b=4), так для вычисления выражений.(Например: S=a*b). Операторприсваивания вычисляет выражение, расположенное справа от символа присваивания(=) и результат присваивается переменной, расположенной слева от символаприсваивания. При записи арифметического выражения используются арифметическиеоперации и функции. Приоритет выполнения арифметических операций сохраняется.Функции можно использовать стандартные (встроенные) COS(X), SQR(X) … и задаваемые самим пользователем. (Например: Y=3*SQR(X)^2)
Для вывода данных используется оператор PRINT.
Например: PRINT S или PRINT “Площадь”;S или PRINT a,b,S
Для окончания программыиспользуется оператор END. Вначале программы можно использовать оператор очистки экрана – CLS.
Пример линейнойпрограммы вычисленияплощади прямоугольника и ее алгоритм в виде блок-схемы:
CLS
INPUT “Введите две стороны прямоугольника”;a,b
S = a * b
PRINT “Площадь”; S
END
2.2 Разветвляющая алгоритмическая структура. Основныеоператоры циклов. Типовые примеры
Алгоритм называется разветвляющимся,если содержит хотя бы одно условие, в результате которого обеспечиваетсяпереход на один из двух возможных вариантов решения задачи. Ветвление можетбыть полным (действия и после да и после нет) и неполным (в случае если нет –ничего не происходит).
Пример разветвляющегося алгоритма –алгоритм решения квадратного уравнения. Появление условия при решении этойзадачи связано с отсутствием корней при отрицательном дискриминанте. Рассмотримблок-схему этого алгоритма:
/>
Для даннойалгоритмической структуры характерно, что в любой момент времени её реализацииосуществляется обработка только по какой-либо одной из ветвей.
Для описанияразветвляющегося алгоритма существуют операторы:
1. условный
блочной структуры:
IF условие THEN
блок действий 1
ELSE
блок действий 2
ENDIF
линейной структуры:
IF условие THEN блок 1 ELSEблок 2
Обе структуры могут бытьиспользованы как в полной форме так и в усеченной – без блока ELSE.
При работе условногооператора сначала проверяется выполнение условия. Если условие выполняется(истинное), то реализуется блок 1, в противном случае – блок 2. Условие – этологическое выражение, использующее операции сравнения (=, =, ) и логические операции (AND, OR).
Программа решенияквадратного уравнения с использованием условного оператора имеет вид:
CLS: INPUTA,B,C: D=B^2-4*A*C
IF D>0 THEN
X1=(-b+SQR(d))/(2*a): X2=(-b-SQR(d))/(2*a): PRINT X1,X2
ELSE
PRINT ”Решенией нет”
ENDIF
2. выбора (выражением может быть список череззапятую 1,3,4 диапазон значений 1 TO 9; операция сравнения IS>=).
SELECT CASE выражение
CASE условие 1
блок операторов 1
CASE условие 2
блок операторов 2
CASE ELSE
блок операторов n
END SELECT
CLS: INPUTA,B,C: D=B^4*A*C
SELECT CASE D
CASE IS >0
X1=(-b+SQR(d))/(2*a)
X2=(-b-SQR(d))/(2*a): PRINT X1,X2
CASE ELSE
PRINT ”Решенией нет”
END SELECT
END2.3 Циклическиеалгоритмические структуры. Основные операторы ветвления. Типовые примеры
Алгоритм называетсяциклическим, если содержит участок, повторяющийся один или много раз.
Циклы бывают сопределённым количеством, неопределённым числом вычислений.
/>
Оператор цикла спараметром:
FOR I = IН TO IK STEP h
тело цикла
NEXT I
Оператор цикла спредусловием:
DO WHILE условие продолжения вычислений (UNTIL условие прекращения вычислений)
тело цикла
LOOP
Оператор цикла спостусловием:
DO
тело цикла
LOOP WHILE условие продолжения вычислений (UNTIL условие прекращения вычислений)
Глава 3. Языки программирования
Прогресс компьютерныхтехнологий определил процесс появления новых разнообразных знаковых систем длязаписи алгоритмов – языков программирования. Смысл появления такого языка –оснащенный набор вычислительных формул дополнительной информации, превращаетданный набор в алгоритм.
Язык программированияслужит двум связанным между собой целям: он дает программисту аппарат длязадания действий, которые должны быть выполнены, и формирует концепции,которыми пользуется программист, размышляя о том, что делать. Первой целиидеально отвечает язык, который настолько «близок к машине», чтовсеми основными машинными аспектами можно легко и просто оперировать достаточноочевидным для программиста образом. Второй цели идеально отвечает язык, которыйнастолько «близок к решаемой задаче», чтобы концепции ее решения можно было выражатьпрямо и коротко.
Связь между языком, накотором мы думаем/программируем, и задачами и решениями, которые мы можемпредставлять в своем воображении, очень близка. По этой причине ограничиватьсвойства языка только целями исключения ошибок программиста в лучшем случаеопасно. Как и в случае с естественными языками, есть огромная польза быть, покрайней мере, двуязычным. Язык предоставляет программисту набор концептуальныхинструментов, если они не отвечают задаче, то их просто игнорируют. Например, серьезныеограничения концепции указателя заставляют программиста применять вектора ицелую арифметику, чтобы реализовать структуры, указатели и т.п. Хорошеепроектирование и отсутствие ошибок не может гарантироваться чисто за счетязыковых средств.
Может показатьсяудивительным, но конкретный компьютер способен работать с программами,написанными на его родном машинном языке. Существует почти столько же разныхмашинных языков, сколько и компьютеров, но все они суть разновидности однойидей простые операции производятся со скоростью молнии на двоичных числах.
Персональные компьютерыIBM используют машинный язык микропроцессоров семейства 8086, т.к. ихаппаратная часть основывается именно на данных микропроцессорах.
Можно писать программынепосредственно на машинном языке, хотя это и сложно. На заре компьютеризации(вначале 1950-х г.г.), машинный язык был единственным языком, большего человек ктому времени не придумал. Для спасения программистов от сурового машинногоязыка программирования, были созданы языки высокого уровня (т.е. немашинныеязыки), которые стали своеобразным связующим мостом между человеком и машиннымязыком компьютера. Языки высокого уровня работают через трансляционныепрограммы, которые вводят «исходный код» (гибрид английских слов иматематических выражений, который считывает машина), и в конечном итогезаставляет компьютер выполнять соответствующие команды, которые даются намашинном языке. Существует два основных вида трансляторов:
· интерпретаторы,которые сканируют и проверяют исходный код в один шаг,
· компиляторы,которые сканируют исходный код для производства текста программы на машинномязыке, которая затем выполняется отдельно. 3.1Интерпретаторы
Одно, часто упоминаемоепреимущество интерпретаторной реализации состоит в том, что она допускает«непосредственный режим». Непосредственный режим позволяет вамзадавать компьютеру задачу вроде PRINT 3.14159*3/2.1 и возвращает вам ответ,как только вы нажмете клавишу ENTER (это позволяет использовать компьютерстоимостью 3000 долларов в качестве калькулятора стоимостью 10 долларов). Крометого, интерпретаторы имеют специальные атрибуты, которые упрощают отладку.Можно, например, прервать обработку интерпретаторной программы, отобразитьсодержимое определенных переменных, бегло просмотреть программу, а затемпродолжить исполнение.
Больше всегопрограммистам нравится в интерпретаторах возможность получения быстрого ответа.Здесь нет необходимости в компилировании, так как интерпретатор всегда готовдля вмешательства в вашу программу. Введите RUN и результат вашего самогопоследнего изменения оказывается на экране.
Однако интерпретаторныеязыки имеют недостатки. Необходимо, например, иметь копию интерпретатора впамяти все время, тогда как многие возможности интерпретатора, а следовательнои его возможности могут не быть необходимыми для исполнения конкретнойпрограммы.
Слабо различимымнедостатком интерпретаторов является то, что они имеют тенденцию отбивать охотук хорошему стилю программирования. Поскольку комментарии и другие формализуемыедетали занимают значительное место программной памяти, люди стремятся ими непользоваться. Хуже всего то, что интерпретаторы тихоходны. Ими затрачиваетсяслишком много времени на разгадывание того, что делать, вместо того чтобызаниматься действительно делом.
При исполнениипрограммных операторов, интерпретатор должен сначала сканировать каждыйоператор с целью прочтения его содержимого (что этот человек просит менясделать?), а затем выполнить запрошенную операцию. Операторы в циклахсканируются излишне много.
3.2 Компиляторы
Компилятор-это транслятортекста на машинный язык, который считывает исходный текст. Он оценивает его всоответствии с синтаксической конструкцией языка и переводит на машинный язык.Другими словами, компилятор не исполняет программы, он их строит.Интерпретаторы невозможно отделить от программ, которые ими прогоняются,компиляторы делают свое дело и уходят со сцены. При работе с компилирующимязыком, таким как Турбо-Бейсик, вы придете к необходимости мыслить о вашихпрограммах в признаках двух главных фаз их жизни: периода компилирования ипериода прогона. Большинство программ будут прогоняться в четыре — десять разбыстрее их интерпретаторных эквивалентов. Если вы поработаете над улучшением,то сможете достичь 100-кратного повышения быстродействия. Оборотная сторонамонеты состоит в том, что программы, расходующие большую часть времени на вознюс файлами на дисках или ожидание ввода, не смогут продемонстрировать какое-то впечатляющееувеличение скорости. 3.3 Эволюция иклассификация языков программирования
Машинно – ориентированныеязыки - это языки, наборы операторов и изобразительные средства которыхсущественно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти ит.д.). Машинно –ориентированные языки позволяют использовать все возможности иособенности Машинно – зависимых языков:
— высокое качествосоздаваемых программ (компактность и скорость выполнения);
— возможность использованияконкретных аппаратных ресурсов;
— предсказуемостьобъектного кода и заказов памяти;
— для составленияэффективных программ необходимо знать систему команд и особенностифункционирования данной ЭВМ;
— трудоемкость процессасоставления программ ( особенно на машинных языках и ЯСК), плохо защищенного отпоявления ошибок;
— низкая скоростьпрограммирования;
— невозможностьнепосредственного использования программ, составленных на этих языках, на ЭВМдругих типов.
Машинно-ориентированныеязыки по степени автоматического программирования подразделяются на классы.
Машинный язык. Отдельныйкомпьютер имеет свой определенный Машинный язык (далее МЯ), ему предписываютвыполнение указываемых операций над определяемыми ими операндами, поэтому МЯявляется командным. Однако, некоторые семейства ЭВМ (например, ЕС ЭВМ, IBM/370/и др.) имеют единый МЯ для ЭВМ разной мощности. В команде любого из нихсообщается информация о местонахождении операндов и типе выполняемой операции.
В новых моделях ЭВМнамечается тенденция к повышению внутренних языков машинно – аппаратным путемреализовывать более сложные команды, приближающиеся по своим функциональнымдействиям к операторам алгоритмических языков программирования.
Языки СимволическогоКодирования. Продолжим рассказ о командных языках, Языки СимволическогоКодирования (далее ЯСК), так же, как и МЯ, являются командными. Однако кодыопераций и адреса в машинных командах, представляющие собой последовательностьдвоичных (во внутреннем коде) или восьмеричных (часто используемых принаписании программ) цифр, в ЯСК заменены на символы (идентификаторы), форманаписания которых помогает программисту легче запоминать смысловое содержаниеоперации. Это обеспечивает существенное уменьшение числа ошибок при составлениипрограмм.
Использованиесимволических адресов – первый шаг к созданию ЯСК. Команды ЭВМ вместо истинных(физических) адресов содержат символические адреса. По результатам составленнойпрограммы определяется требуемое количество ячеек для хранения исходныхпромежуточных и результирующих значений. Назначение адресов, выполняемоеотдельно от составления программы в символических адресах, может проводитьсяменее квалифицированным программистом или специальной программой, что взначительной степени облегчает труд программиста.
Автокоды. Есть такжеязыки, включающие в себя все возможности ЯСК, посредством расширенного введениямакрокоманд — они называются Автокоды.
В различных программахвстречаются некоторые достаточно часто использующиеся командныепоследовательности, которые соответствуют определенным процедурампреобразования информации. Эффективная реализация таких процедур обеспечиваетсяоформлением их в виде специальных макрокоманд и включением последних в языкпрограммирования, доступный программисту. Макрокоманды переводятся в машинныекоманды двумя путями – расстановкой и генерированием. В постановочной системесодержатся «остовы» — серии команд, реализующих требуемую функцию,обозначенную макрокомандой. Макрокоманды обеспечивают передачу фактическихпараметров, которые в процессе трансляции вставляются в «остов» программы,превращая её в реальную машинную программу.
В системе с генерациейимеются специальные программы, анализирующие макрокоманду, которые определяют,какую функцию необходимо выполнить и формируют необходимую последовательностькоманд, реализующих данную функцию.
Обе указанных системыиспользуют трансляторы с ЯСК и набор макрокоманд, которые также являютсяоператорами автокода.
Развитые автокодыполучили название Ассемблеры. Сервисные программы и пр., как правило,составлены на языках типа Ассемблер.
Макрос. Язык, являющийсясредством для замены последовательности символов описывающих выполнениетребуемых действий ЭВМ на более сжатую форму — называется Макрос (средствозамены).
В основном, Макроспредназначен для того, чтобы сократить запись исходной программы. Компонентпрограммного обеспечения, обеспечивающий функционирование макросов, называетсямакропроцессором. На макропроцессор поступает макроопределяющий и исходныйтекст. Реакция макропроцессора на вызов-выдача выходного текста.
Макрос одинаково можетработать, как с программами, так и с данными.
Машинно – независимыеязыки – это средство описания алгоритмов решения задач и информации, подлежащейобработке. Они удобны в использовании для широкого круга пользователей и нетребуют от них знания особенностей организации функционирования ЭВМ и ВС.
Подобные языки получилиназвание высокоуровневых языков программирования. Программы, составляемые натаких языках, представляют собой последовательности операторов,структурированные согласно правилам рассматривания языка(задачи, сегменты,блоки и т.д.). Операторы языка описывают действия, которые должна выполнять система после трансляции программы на МЯ.
Т.о., командныепоследовательности (процедуры, подпрограммы), часто используемые в машинныхпрограммах, представлены в высокоуровневых языках отдельными операторами.Программист получил возможность не расписывать в деталях вычислительный процессна уровне машинных команд, а сосредоточиться на основных особенностяхалгоритма.
Проблемно –ориентированные языки. С расширением областей применения вычислительной техникивозникла необходимость формализовать представление постановки и решение новыхклассов задач. Необходимо было создать такие языки программирования, которые,используя в данной области обозначения и терминологию, позволили бы описыватьтребуемые алгоритмы решения для поставленных задач, ими стали проблемно –ориентированные языки. Эти языки, языки ориентированные на решение определенныхпроблем, должны обеспечить программиста средствами, позволяющими коротко ичетко формулировать задачу и получать результаты в требуемой форме.
Проблемных языков оченьмного, например:
Фортран, Алгол – языки,созданные для решения математических задач;
Simula, Слэнг — для моделирования;
Лисп, Снобол – для работысо списочными структурами.
Универсальные языки.Универсальные языки были созданы для широкого круга задач: коммерческих,научных, моделирования и т.д. Первый универсальный язык был разработан фирмойIBM, ставший в последовательности языков Пл/1. Второй по мощности универсальныйязык называется Алгол-68. Он позволяет работать с символами, разрядами, числамис фиксированной и плавающей запятой. Пл/1 имеет развитую систему операторов дляуправления форматами, для работы с полями переменной длины, с даннымиорганизованными в сложные структуры, и для эффективного использования каналовсвязи. Язык учитывает включенные во многие машины возможности прерывания иимеет соответствующие операторы. Предусмотрена возможность параллельноговыполнение участков программ.
Программы в Пл/1компилируются с помощью автоматических процедур. Язык использует многиесвойства Фортрана, Алгола, Кобола. Однако он допускает не только динамическое,но и управляемое и статистическое распределения памяти.
Диалоговые языки.Появление новых технических возможностей поставило задачу перед системнымипрограммистами – создать программные средства, обеспечивающие оперативноевзаимодействие человека с ЭВМ их назвали диалоговыми языками.
Эти работы велись в двухнаправлениях. Создавались специальные управляющие языки для обеспеченияоперативного воздействия на прохождение задач, которые составлялись на любыхраннее неразработанных (не диалоговых) языках. Разрабатывались также языки,которые кроме целей управления обеспечивали бы описание алгоритмов решениязадач.
Необходимость обеспеченияоперативного взаимодействия с пользователем потребовала сохранения в памяти ЭВМкопии исходной программы даже после получения объектной программы в машинныхкодах. При внесении изменений в программу с использованием диалогового языкасистема программирования с помощью специальных таблиц устанавливает взаимосвязьструктур исходной и объектной программ. Это позволяет осуществить требуемыередакционные изменения в объектной программе.
Одним из примеровдиалоговых языков является Бэйсик. Бэйсик использует обозначения подобныеобычным математическим выражениям. Многие операторы являются упрощеннымивариантами операторов языка Фортран. Поэтому этот язык позволяет решатьдостаточно широкий круг задач.
Непроцедурные языки.Непроцедурные языки составляют группу языков, описывающих организацию данных,обрабатываемых по фиксированным алгоритмам (табличные языки и генераторыотчетов), и языков связи с операционными системами.
Позволяя четко описыватькак задачу, так и необходимые для её решения действия, таблицы решений даютвозможность в наглядной форме определить, какие условия должны быть выполненыпрежде чем переходить к какому-либо действию. Одна таблица решений, описывающаянекоторую ситуацию, содержит все возможные блок-схемы реализаций алгоритмоврешения.
Табличные методы легкоосваиваются специалистами любых профессий.
Программы, составленныена табличном языке, удобно описывают сложные ситуации, возникающие присистемном анализе.
Заключение
Изобретение языкапрограммирования высшего уровня позволило нам общаться с машиной, понимать её(если конечно Вам знаком используемый язык), как понимает американец немногознакомый с русским языком древнюю азбуку Кириллицы. Проще говоря, мы в нашемразвитии науки программирования пока что с ЭВМ на ВЫ. Но если мы обратимвнимание на темпы роста и развития новейших технологий в областипрограммирования, то можно предположить, что в ближайшем будущем, человеческиепознания в этой сфере, помогут произвести на свет языки, умеющие принимать,обрабатывать и передавать информации в виде мысли, слова, звука или жеста. Таки хочется назвать это детище компьютеризированного будущего: «языкипрограммирования «высочайшего» уровня». Возможно, концепция решенияэтого вопроса проста, а ближайшее будущее этого проекта уже не за горами.
Размышляя над этим,хочется верить в прогресс науки и техники, в высоко — компьютеризированноебудущее человечества, как единственного существа на планете, пусть и неиспользующего один, определенный разговорный язык, но способного так быстропрогрессировать и развивать свой интеллект, что и перехода от многоязыковойсистемы к всеобщему пониманию долго ждать не придется.
Единственный способизучать новый язык программирования – писать на нём программы.
Список литературы
1. Коляда М. Г. Окнов удивительный мир информатики. – Д.: Сталкер, 1997.
2. Немнюгин С. А.Turbo Pascal: практикум. – СПб: Питер, 2003.
3. Попов В. Б. TurboPascal для школьников: Учеб. пособие. – М.: Финансы и статистика, 2000.
4. Турбо Паскаль7.0. Самоучитель. – СПб.: Питер; К.: Издательская группа BHV, 2002.
5. “Языкипрограммирования высокого уровня”, Хротко Г., 2002 г.;
6. “Языкипрограммирования”, Малютин Э.А., Малютина Л.В., 2005 г.;
7. “Новые языкипрограммирования и тенденции их развития”, Ушкова В., 2007 г.;
8. “Мир Лиспа” т.1,Хьювенен Э., Сеппенен Й., 1990 г.;
9. “Алгоритмическиеязыки реального времени”, Янг С., 2005 г..