Понятие и состав языка программирования. Машинные и символьные языки. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Понятие и состав языка программирования. Машинные и символьные языки.



Особенности процедурных языков программирования. Примеры языков.

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

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

 

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

Наиболее популярные:

- Basic; (обучение)

- Pascal; (универсальный ЯП, который является потомком языков ALGOL, обучение)

- Fortran; (предназначен для численных расчетов)

- Modula 2, 3 и Oberon; (развитие языка Паскаль предназначенные для широкого класса задач)

- С, С++. (универсальные ЯП используемые для решения прикладных задач и задач системного программирования)

 

 

Общая характеристика непроцедурных языков программирования.

Эти языки относятся к классу описательных ЯП. С их помощью описывается суть решаемой задачи и перекладывается на компьютер сам процесс решения.

К языкам этого типа относятся:

- Функциональные ЯП (Lisp, Haskell, Schema, …)

- Логические ЯП (Prolog, RProlog, …)

 

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

Под системой программирования конкретного языка понимается комплекс программ предназначенных для подготовки, отладки и выполнения программ записанных на этом ЯП.

 

Обычно в состав СП входит:

- редактор текстов;

- компилятор или интерпретатор;

- редактор внешних связей;

- загрузчик;

- отладчик;

- библиотекарь;

- профилер.

 

Символьный ЯП без компилятора или интерпретатора на ВМ может представлять только теоретический интерес. Выполнение программы не возможно.

 

Все АЯ по методу реализации на ЭВМ делятся на:

- транслирующего типа;

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

- интерпретирующего типа.

Для выполнения программ, записанных на этих языках, на ЭВМ должен быть установлен интерпретатор с этого ЯП.

 

Профилировщик.

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

 

6. Интерпретатор.

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

Программа => Интерпретатор => Результат.

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

Использование интерпретатора имеет плюсы и минусы.

- программы выполняются намного медленнее чем исполняемые программы

+ отсутствие необходимости в системе программирования

- увеличение скорости отладки программы, т.к. человек и машина имеют дело с одним и тем же текстом программы

 

Формулы Бэкуса-Наура.

Этот язык характеризуется тем, что для описания синтаксиса используются спец. Формулы. Эти формулы содержат знаки:

::= - есть по определению.

| - или.

< > - меньше, больше. В эти скобки заключаются описания конструкций языка.

[ ] – необязательные элементы.

{ } – элементы которые могут входить ноль или большее число раз.

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

 

<целое число>::=[<знак>]<цифра>{<цифра>}

<знак>::= + / -

<цифра>::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

C помощью формул БНФ можно однозначно описать синтаксис любого ЯП, но эти формулы имеют малую наглядность и достаточно громоздки.

Потому наряду с БНФ для описания синтаксиса используются другие метаязыки.

 

Целый тип данных.

Целые типы определяют константы, переменные и функции, значения которых реализуются множеством целых чисел, допустимых в данной ЭВМ.

 

Над целыми операндами можно выполнять следующие арифметические операции: сложение (+), вычитание (-), умножение(*), деление(/), деление на цело (div), получение остатка от деления (mod).

 

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

17 div 2 = 8, 3 div 5 = 0.

17 mod 2 = 1, 3 mod 5 = 3.

 

К аргументам целого типа применимы следующие стандартные (встроенные) функции, результат выполнения которых имеет целый тип:

Abs (X), Sqr (X), Succ (X), Pred (X),

и которые определяют соответственно абсолютное значение Х, Х в квадрате, Х+1, Х-1.

 

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

Sin (X), Cos (X), ArcTan (X), Ln (X), Exp (X), Sqrt (X).

 

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

 

Результат выполнения функции проверки целой величины на нечетность Odd (X) имеет значение истина, если аргумент нечетный, и значение ложь, если аргумент четный:

 

X=5 Odd (X)= TRUE, X=4 Odd (X)=FALSE.

 

Для быстрой работы с целыми числами определены процедуры:

 

Inc (X) X:=X+1

Inc (X,N) X:=X+N

Dec (X) X:=X-1

Dec (X,N) X:=X-N

 

Вещественный тип данных.

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

 

Тип Real определен в стандартном ПАСКАЛЕ и математическим сопроцессором не поддерживается.

Остальные действительные типы определены стандартом IEEE 457 и реализованы на всех современных компьютерах.

Для их использования при наличии сопроцессора или при работе на ЭВМ типа 80486 необходимо компилировать программу с ключом {$ N+}, а при отсутствии сопроцессора - с ключами {$N-,E+}.

Тип Comp хотя и относится к действительным типам, хранит только длинные целые значения.

Над действительными операндами можно выполнять следующие арифметические операции, дающие действительный результат:

 

сложение (+), вычитание (-), умножение (*), деление (/).

 

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

Один из операндов, участвующих в этих операциях, может быть целым.

 

К действительным аргументам применимы функции, дающие действительный результат:

Abs (X), Sqr (X), Sin (X), Cos (X), ArcTan (X), Ln (X), Exp (X), Sqrt (X), Frac (X), Int (X), Pi.

 

Функция Frac (X) возвращает дробную часть X, функция Int (X) - целую часть X.

Безаргументная функция Pi возвращает значение числа Пи действительного типа.

 

К аргументам действительного типа применимы также функции

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

 

Булевский тип.

Логический тип (Boolean) определяет те данные, которые могут принимать логические значения TRUE и FALSE.

К булевским операндам применимы следующие логические операции:

 

not and or xor.

 

Логический тип определен таким образом, что FALSE < TRUE. Это позволяет применять к булевским операндам все операции отношения.

В ТУРБО ПАСКАЛЬ введены еще разновидности логического типа: ByteBool, WordBool и LongBool, которые занимают в памяти ЭВМ один, два и четыре байта соответственно.

Символьный тип.

Символьный тип (Char) определяет упорядоченную совокупность символов, допустимых в данной ЭВМ. Значение символьной переменной или константы - это один символ из допустимого набора.

 

Символьная константа может записываться в тексте программы тремя способами:

- как один символ, заключенный в апострофы, например:

'A' 'a' 'Ю' 'ю';

- с помощью конструкции вида #K, где K - код соответствующего символа, при этом значение K должно находиться в пределах 0..255;

- с помощью конструкции вида ^C, где C - код соответствующего управляющего символа, при этом значение C должно быть на 64 больше кода управляющего символа.

 

К величинам символьного типа применимы все операции отношения.

 

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

Ord (C) Chr (K).

Первая функция определяет порядковый номер символа С в наборе символов, вторая определяет по порядковому номеру К символ, стоящий на К-ом месте в наборе символов. Порядковый номер имеет целый тип.

 

К аргументам символьного типа применяются функции, которые определяют предыдущий и последующий символы:

Pred (C) Succ (C). Pred ('F') = 'E'; Succ ('Y') = 'Z'.

 

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

Для литер из интервала 'a'..'z' применима функция UpCase (C), которая переводит эти литеры в верхний регистр 'A'..'Z'.

 

Раздел описания констант.

Раздел констант позволяет ввести для имеющихся в программе констант альтернативные имена.

Константа – объект данных, который в процессе программы не может изменится.

Раздел констант имеет след. синтаксис:

const <имя константы>=значение;

 

Тип константы определяется типом ее значения. Концом раздела констант является начало следующего раздела.

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

Считается, что использование в программе вместо констант их имен делает программу более наглядной и легко идентифицируемой.

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

 

Раздел описания типов.

 

Раздел описания переменных.

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

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

Каждая такая переменная характеризуется ее именем и типом, а также текущим значением. Для именования переменных используются допустимые идентификаторы. А тип переменных определяет множество ее допустимых значений.

Раздел описания переменных имеет след. синтаксис:

var <имя1>, <имя2>, …, <имяn>:<тип>;

 

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

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

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

 

Условный оператор if.

Существует две формы условного оператора:

1. if <выражение> then <операторы>.

2. if <выражение> then <операторы> else <операторы>.

 

Между if и then должно находится булевское выражение.

Порядок выполнения:

1. Вычисляется значение булевского выражения.

2. Если истинно, то выполняются операторы после then.

3. В противном случае переходит к следующему оператору программы либо к операторам идущим после else.

 

25. Оператор вариантов.

Этот оператор имеет вид:

case <выражение> of

<список меток варианта 1>: <оператор1>;

<список меток варианта 2>: <оператор2>;

…;

<список меток варианта 3>: <оператор3>;

end;

 

Case – селектор выбора и может быть выражением любого скалярного типа, кроме вещественного.

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

Метки в списке разделяются запятыми.

Оператор выполняется в следующей последовательности:

- вычисляется значение селектора,

- в порядке сверху вниз осуществляется поиск варианта, список меток которых содержит значение селектора,

- как только находится такой вариант, то выполнятся оператор, входящий в него,

- выход из оператора выбора

Если искомый вариант ответа не найден, то действие в стандартном Паскале не определено и зависит от реализации.

Скалярный тип.

Скалярный тип является основным типом данных в Паскале.

Стандартные скалярные типы так же относятся к скалярному типу.

type <имя типа>:=(<имя>,{<имя>});

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

type <имя типа>:=(white, red, blue, yellow, purple, green, orange, black);

Константы входящие в определение таких типов нумеруются с 0.

Поэтому:

ord (white)=0;

ord (black)=7;

 

К значениям перечислимого типа применимы: pred, succ.

pred (black)=orange;

succ (white)=red;

 

Значения перечислимого типа можно сравнивать: C>C1, если ord (C) > ord (C1);

blue>red;

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

Переменные перечислимых типов нельзя вводить или выводить с помощью стандартных операторов ввода/вывода.

В конкретных реализациях переменные перечислимых типов используются для задания значений различных стандартных констант.

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

 

Ограниченный тип.

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

Тип, на основе которого строится ограниченный, называется базовым.

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

Описание:

type <имя типа>=(<константа1> … <константа2>);

Ограничение задает диапазон возможных значений нового типа, который определен отрезком или интервалом, задаваемый константой определяющей min и max значения.

В указанный интервал должно входить хотя бы одно значение.

Во множество возможных значений входят все значения с <константа1> до <константа2> включительно. Две указанных константы должны принадлежать одному и тому же типу.

После определения типов можно использовать переменные этих типов.

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

Переменные этого типа могут сравниваться с помощью операции отношения.

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

 

 

//Структурный тип.

// Характеризуется тем, что они строятся на основе других типов и состоят из компонентов.

// В паскале имеется 4 способа реализации этих типов:

// 1. массивы,

// 2. записи,

// 3. множества,

// 4. файлы.

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

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

// Структурный тип может быть упакованным или не упакованным.

 

Регулярный тип. Массивы.

Массив – это набор некоторого числа элементов (однотипные компоненты массива).

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

Синтаксис:

type <имя типа> = array [<тип индекса> {<тип индекса>}] of <тип элемента>;

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

Тип элемента может быть любым скалярным или структурированным типом за исключением файлового.

Количество используемых типов индексов определяет размерность соответствующих массивов. Если тип индекса один, то переменные этого типа будут называться одномерным массивом. Если 2 типа индексов, то – двумерные….

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

 

Строка.

 

End.

<список полей>::=<фиксированная часть> | <фиксированная часть>;<вариантная часть> | <вариантная часть>

<фиксированная часть>::=<секция записей>{<секция записей>}

<секция записей>::=<имя>{<имя>}:<тип> | <пусто>

 

Определение комбинаторного типа имеет вид:

type <имя типа>::= record

<имя>{, <имя>}:<тип>

………

<имя>{, <имя>}:<тип>

[<вариантная часть>]

End.

 

Комбинаторный тип, у которого отсутствует вариантная часть, называется упрощенным, а в противном случае типом с вариантами.

После определения таких типов в программе можно использовать переменные этих типов.

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

Компонентом записей можно присваивать значение и они могут участвовать в выражениях точно также как обычные переменные соответствующего типа.

Между переменными одного и того же типа можно применять операции присваивания.

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

Компоненты комбинированного типа также могут иметь комбинированный тип.

Вариантная часть всегда идет после фиксированной части имеет след. синтаксис:

case <имя поля признака>: <тип> of <вариант> … <вариант>;

 

Вариант:

<список меток варианта>: (:<список полей>)

 

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

Каждый вариант состоит из списка меток варианта затем «:», а затем в круглых скобках список полей.

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

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

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

 

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

 

Множественный тип.

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

Множественный тип описывается с помощью служебных слов Set of, например:

type M= Set of B;

Здесь М - множественный тип, В - базовый тип.

 

Пример описания переменной множественного типа:

 

Type

M= Set of 'A'..'D';

Var

MS: M;

 

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

Var

C: Set of 0..7;

 

Константы множественного типа записываются в виде заключенной в квадратные скобки последовательности элементов или интервалов базового типа, разделенных запятыми, например:

['A', 'C'] [0, 2, 7] [3, 7, 11..14].

Константа вида: [ ] означает пустое подмножество.

 

Множество включает в себя набор элементов базового типа, все подмножества данного множества, а также пустое подмножество. Если базовый тип, на котором строится множество, имеет К элементов, то число подмножеств, входящих в это множество, равно 2 в степени К. Пусть имеется переменная Р интервального типа:

var P: 1..3;

 

Эта переменная может принимать три различных значения - либо 1, либо 2, либо 3. Переменная Т множественного типа

var T: Set of 1..3;

может принимать восемь различных значений:

[ ] [1,2]

[1] [1,3]

[2] [2,3]

[3] [1,2,3]

Порядок перечисления элементов базового типа в константах безразличен.

Значение переменной множественного типа может быть задано конструкцией вида [T], где T - переменная базового типа.

К переменным и константам множественного типа применимы операции присваивания(:=), объединения(+), пересечения(*) и вычитания(-):

['A','B'] + ['A','D'] даст ['A','B','D']

['A'] * ['A','B','C'] даст ['A']

['A','B','C'] - ['A','B'] даст ['C'].

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

К множественным величинам применимы операции: тождественность (=), нетождественность (<>), содержится в (<=), содержит (>=). Результат выполнения этих операций имеет логический тип, например:

['A','B'] = ['A','C'] даст FALSE

['A','B'] <> ['A','C'] даст TRUE

['B'] <= ['B','C'] даст TRUE

['C','D'] >= ['A'] даст FALSE.

Кроме этих операций для работы с величинами множественного типа в языке Паскаль используется операция in проверяющая принадлежность элемента базового типа, стоящего слева от знака операции, множеству, стоящему справа от знака операции. Результат выполнения этой операции - булевский. Операция проверки принадлежности элемента множеству часто используется вместо операций отношения, например:

A in ['A', 'B'] даст TRUE,

2 in [1, 3, 6] даст FALSE.

 

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

['A','B','C','D']

представлено в памяти ЭВМ битовой строкой

1 1 1 1.

Подмножества этого множества представлены строками:

['A','B','D'] 1 1 0 1

['B','C'] 0 1 1 0

['D'] 0 0 0 1

Величины множественного типа не могут быть элементами списка ввода - вывода.

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

Инициализация величин множественного типа производится с помощью типизированных констант:

const seLit: Set of 'A'..'D'= [];

 

Рекурсия. Основные понятия. Прямая и косвенная рекурсия.

 

Type

PComp= ^Comp;

Comp= record

D:T;

pNext: PComp

end;

Var

pBegin, pEnd, pCKey, pPreComp, pAux: PComp;

где pBegin - указатель начала списка, pEnd - указатель конца списка, pCKey, pPreComp, pAux - вспомогательные указатели.

 

Ассоциативные списки.

Часто одни и те же объекты представляют интерес с различных точек зрения. И возникает потребность включать информацию об этих объектах в различные списки.

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

Каждое звено имеет для каждого ассоциативного списка свою ссылку.

 

Стеки.

Стеком называется динамическая структура данных, добавление компоненты в которую и исключение компоненты из которой производится из одного конца, называемого вершиной стека. Стек работает по принципу LIFO (Last-In, First-Out) поступивший последним, обслуживается первым.

 

Обычно над стеками выполняется три операции:

-начальное формирование стека (запись первой компоненты);

-добавление компоненты в стек;

-выборка компоненты (удаление).

 

Очереди.

Очередью называется динамическая структура данных, добавление компоненты в которую производится в один конец, а выборка осуществляется с другого конца. Очередь работает по принципу FIFO (First-In, First-Out) поступивший первым, обслуживается первым.

 

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

 

Описание компоненты очереди и переменных типа указатель дадим следующим образом:

 

Type

PComp=^Comp;

Comp=record

D:T;

pNext:PComp

end;

Var

pBegin, pEnd, pAux: PComp;

где pBegin - указатель начала очереди, pEnd - указатель конца очереди, pAux - вспомогательный указатель.

Тип Т определяет тип данных компоненты очереди.

 

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

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

 

Понятие и состав языка программирования. Машинные и символьные языки.

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

 

Любой ЯП представляет собой набор символов и систему правил: образования и истолкования конструкций из этих символов используемых для записи алгоритмов.

 

Алгоритм решения задачи записанный на конкретном ЯП называется программой.

 

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

 

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

 

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

 

Все ЯП можно разбить на:

1. Машинные языки

2. Символьные языки

 

Машинный язык – ЯП операторами которого являются машинные команды.

Каждый тип ЭВМ имеет свой конкретный машинный язык и ВМ может непосредственно выполнять программы только на ее машинном языке.

 

Каждая машинная команда обычно задается в цифровом коде и имеет структуру:

КОП – Адресное поле.

КОП – поле, в котором задается код операции («+», «-», …), определяющий заданные команды действий.

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

 

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

 

Разработка программ на МЯ – ручное программирование и является чрезвычайно сложным процессом.

 

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

 

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

 

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

1. Языки типа Ассемблер.

2. Языки высокого уровня.

 

Языки 1-го типа очень похожи на МЯ и отличаются только тем, что для обозначения операций и операндов используются символьные обозначения.

 

Языки типа Ассемблер и МЯ являются машинно-ориентированными.

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

 

Разработка программ на языках типа Ассемблер гораздо более простая, чем на МЯ, все равно остается сложным процессом.

 

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

 

К недостаткам языков типа Ассемблер можно отнести сложность разработки программ и не возможность использовать на различных типах ЭВМ.

 

Для автоматизации и упрощения программирования разработаны алгоритмические языки.

 

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

 

Это позволило максимально упростить разработку программ и сделать запись алгоритмов компактной и наглядной.

 

Алгоритмические языки являются машинно-независимыми, т.е. программа записанная на конкретном алгоритмическом языке может выполнятся на любом типе ЭВМ, где имеется система программирования на заданном языке.

 

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

 

Для языков типа Ассемблер такой перевод выполняется автоматом с помощью ЭВМ с использованием специальных программ, называемых ассемблером.

 

Компилятор – программа, предназначенная для перевода с алгоритмического языка программирования на машинный язык.

 

Особенности процедурных языков программирования. Примеры языков.

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

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

 

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

Наиболее популярные:

- Basic; (обучение)

- Pascal; (универсальный ЯП, который является потомком языков ALGOL, обучение)

- Fortran; (предназначен для численных расчетов)

- Modula 2, 3 и Oberon; (развитие языка Паскаль предназначенные для широкого класса задач)

- С, С++. (универсальные ЯП используемые для решения прикладных задач и задач системного программирования)

 

 



Поделиться:


Последнее изменение этой страницы: 2016-12-17; просмотров: 295; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.140.242.165 (0.255 с.)