Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

F530EFB30609B81FDFDE985C2ED2DB0F

.pdf
Скачиваний:
13
Добавлен:
12.02.2015
Размер:
1.81 Mб
Скачать

Глава 14. Программирование

Языки низкого уровня зависят от типа ЭВМ. Языки высокого уровня не ориентированы на систему команд той или иной ЭВМ, поэтому программа, написанная, например, на таком языке для IBM PC, будет работать правильно и даст те же результаты, если ее выполнять на VAX ЭВМ. Запись программ на таких языках близка к записи на обычном, естественном языке.

К машинно-зависимым языкам относятся машинный язык и ма- шинно-ориентированные языки.

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

Машинные языки были первыми языками программирования. На машинном языке, в конечном счете, представляется исполняемая программа.

Машинно-ориентированные языки программирования – это языки программирования низкого уровня, в которых каждая команда транслируется в

одну команду машинного языка.

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

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

Языки программирования высокого уровня

Декларативные

 

Процедурные

 

Объектно-

 

 

ориентированные

 

 

 

 

Функциональные Логические

Рис. 33. Классификация языков программирования высокого уровня

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

131

Раздел 4. Основы моделирования, алгоритмизации, программирования

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

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

определений функций.

К функциональным языкам относятся Lisp, Erlang, Haskell, Refal и

др.

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

логического вывода.

К логическим языкам относится, например, Prolog.

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

К процедурным языкам относят Pascal, С, Ada, Fortran, Basic, Focal и

др.

Объектно-ориентированный язык программирования – язык программирования высокого уровня, при использовании которого главными

элементами программ являются объекты.

К объектно-ориентированным языкам относятся C++, Java, Delphi, Objective Caml и др.

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

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

132

Глава 14. Программирование

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

14.2. Технологии программирования

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

Большое распространение получили структурное и объектноориентированное программирование.

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

Эта технология основана на принципах: программирования «сверху-вниз»; модульного программирования.

Разработка программы ведётся пошагово, методом «сверху-вниз». Повторяющиеся фрагменты программы или не повторяющиеся, но представляющие собой логически целостные блоки, могут оформ-

ляться в виде модулей (подпрограмм). В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова подпрограммы.

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

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

выделении классов объектов; установлении свойств объектов и методов их обработки;

создании иерархии классов, наследовании свойств объектов и методов их обработки.

Объектом в объектно-ориентированных языках программирования называют совокупность свойств (параметров) определенных сущностей и методов их обработки (программных средств).

Все объекты наделены определенными свойствами.

133

Раздел 4. Основы моделирования, алгоритмизации, программирования

Методом называют набор допустимых действий над объектом или его свойствами.

Событие – это характеристика изменений состояния объекта. Классом объектов называют совокупность объектов, характеризу-

ющихся общностью свойств и применяемых к ним методов обработки.

Объектно-ориентированный язык программирования характеризуется тремя основными свойствами:

инкапсуляция (комбинирование записей с процедурами и функциями, манипулирующими полями этих записей, формирует новый тип данных – объект);

наследование (создание на базе существующих новых классов объектов с возможностью для каждого из них, относящегося к иерархии, иметь (наследовать) все свойства класса – родителя);

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

14.3. Структура языка программирования высокого уровня (на примере Pascal)

К основным компонентам языка программирования, как и любого языка, относятся алфавит, синтаксис и семантика.

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

Лексика – словарный запас языка.

Синтаксис – это правила построения фраз, позволяющие определить, правильно или неправильно написано конкретное предложение.

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

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

Из знаков складываются слова. В алгоритмическом языке существует два класса слов:

данные, ключевые слова.

134

Глава 14. Программирование

Данные – объекты, над которыми ЭВМ производит действия в соответствии с программой.

Данные характеризуются:

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

типом (параметр данных, определяющий диапазон хранимого значения, методы его обработки и объем выделяемой памяти).

К основным типам данных, используемых в Pascal, относятся: целый (например, тип integer – совокупность целых чисел от

-32768 до 32767; тип byte – совокупность целых чисел от 0 до 255); вещественный (самый универсальный – real, включающий чис-

ла от 2,9*10-39 до 1,7*1038);

символьный (char – совокупность символов – букв русского и латинского алфавита, цифр и других знаков);

строковый (string – совокупность строк, сотоящих не более чем из 255 символов, string [n] – строка из n символов);

логический (boolean – совокупность двух логических значений –

True и False).

Существует два основных вида данных: переменные, константы.

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

Например, строки из программы на Pascal: write (‘Введите значение a ’);

readln (a);

Здесь переменной является а.

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

135

Раздел 4. Основы моделирования, алгоритмизации, программирования

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

Клинейным структурам данных относят списки, стеки, очереди

идр.

Список – это линейная структура данных, в которой объекты расположены в линейном порядке (рис. 34).

Рис. 34. Схема списка

Разновидностью списка являются массивы.

Массив – это упорядоченная последовательность однотипных данных, объединенных одним именем.

Массивы характеризуются размерностью (количество элементов массива).

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

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

двумерными (имя в скобках содержит два индекса, первый обозначает количество строк, а второй – количество столбцов),

трехмерными (три индекса) и т.д.

Стек (от англ. stack – стопка) – это линейная структура данных с методом доступа к элементам в порядке «последним вошел – первым вышел», т.е. первой будет извлекаться та информация, которая была занесена последней (рис. 35).

выход

вершина

стека

ячейки

дно стека

Рис. 35. Схема стека

136

Глава 14. Программирование

Очередь – это линейная структура данных с методом доступа к элементам в порядке «первым вошел – первым вышел», т.е. со дна стека (рис. 36).

вершина

 

стека

ячейки

 

дно стека

выход

Рис. 36. Схема очереди

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

совокупность объектов, которые изображаются как вершины (узлы), со связями (дугами, ребрами) между ними (рис. 37).

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

 

1

 

 

1

f

а

 

 

 

 

 

4

2

 

2

3

e

d

 

 

 

5

b

4

5

6 7

c

 

 

 

 

8

9

 

 

3

 

Рис. 37. Схема графа

Рис. 38. Схема дерева

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

Оператор – это специальная запись, которая дает компьютеру команду на выполнение определенного алгоритма и содержит данные (аргументы),

необходимые для выполнения этого действия.

В состав операторов входят ключевые слова, данные, выражения и

т.д.

Основные операторы, используемые в Pascal, представлены в таблице 14.

137

Раздел 4. Основы моделирования, алгоритмизации, программирования

Таблица 14

Основные операторы Pascal

Название

 

Назначение

Форма записи

оператора

 

 

 

 

 

:=

Оператор присваивания: помеща-

имя переменой := выражение;

 

ет определенное значение в необ-

 

 

ходимую переменную

 

write

Оператор вывода данных на экран

write (сообщение);

writeln

Оператор вывода данных на экран и

writeln (сообщение);

 

перевода курсора на новую строку

 

read

Оператор ввода данных с клавиату-

read (список переменных);

 

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

 

readln

Оператор ввода данных с клавиату-

readln (список переменных);

 

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

 

 

и перевода курсора на следующую

 

 

строку

 

 

 

 

if

Оператор условного перехода

if (условие)

 

 

 

 

 

then (операторы 1)

 

 

 

 

 

else (операторы 2)

case

Оператор множественного выбора

case (выражение селектор) of

 

 

 

 

 

(список констант 1): (операторы 1)

 

 

 

 

 

(список констант 2): (операторы 2)

 

 

 

 

 

 

 

 

 

 

(список констант n): (операторы n)

 

 

 

 

 

else (оператор)

while

Оператор

цикла

с

предусловием

while (условие) do

 

(цикла «пока»)

 

 

(операторы)

repeat

Оператор

цикла

с

постусловием

repeat

 

(цикла «до»)

 

 

(операторы)

 

Оператор цикла с известным числом

until (условие)

for

С увеличением параметра цикла:

 

повторений

 

 

 

for (параметр цикла: начальное

 

 

 

 

 

значение) to (конечное значение) do

 

 

 

 

 

(операторы)

 

 

 

 

 

С уменьшением параметра цикла:

 

 

 

 

 

for (параметр цикла: начальное зна-

 

 

 

 

 

чение) downto (конечное значение)

 

 

 

 

 

do (операторы)

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

Выражения состоят из констант, переменных, функций, объединенных знаками операций, и скобок.

138

Глава 14. Программирование

Различают выражения арифметические, логические и строковые. Арифметическое выражение – символическая запись, указывающая правила вычисления числового значения. Арифметические выра-

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

Например:

ax2+ bx+ c

= (a * x * x + b * x + c) /(d + 3.4)

d + 3,4

 

 

 

 

 

Логические выражения – символическая запись, описывающая некоторые условия, которые могут удовлетворяться или не удовлетворяться. Таким образом, логическое выражение может принимать только два значения: истина (True) или ложь (False).

Строковые выражения – символическая запись, значениями которой являются тексты.

Существует несколько типов операций:

арифметические операции: «*» – умножение, «/» – деление, «+» – сложение, «-» – вычитание, «div» – целочисленное деление; «mod» – вычисление остатка от целочисленного деления;

операции отношения: «=» – равно, «>» – больше, «<» – меньше, «<>» – не равно, «>=» – больше или равно, «<=» – меньше или равно;

логические операции: not – логическое НЕ, and – логическое И, or– логическое ИЛИ, xor – исключающее ИЛИ);

строковые опеpации: «+» – операция сцепки символьных значений дpуг с другом с образованием одной длинной строки).

Выполнение операций в выражении производится с учетом их приоритета:

not – первый уровень (высший); *, /, mod, div, and – второй уровень; +, -, or, xor – третий уровень;

=, >, <, <>, >=, <= – четвертый уровень (низший).

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

139

Раздел 4. Основы моделирования, алгоритмизации, программирования

Таблица 15

Встроенные функции Pascal

Название функции

Значение функции

Abs (n)

Абсолютное значение n

Sqrt (n)

Квадратный корень из n

Sqr (n)

Квадрат n

Sin (n)

Синус n

Cos (n)

Косинус n

Exp (n)

Экспонента n

Ln (n)

Натуральный логарифм n

Random (n)

Случайное целое число от 0 до n-1

Odd (n)

Определение нечетных чисел

Структура программы, записанной на языке Pascal, в общем виде

имеет следующую структуру:

program имя программы; uses

{объявление модулей} label

{объявление меток} type

{объявление типов} const

{объявление констант} var

{объявление переменных} begin

{инструкции программы} end.

Заголовок программы состоит из служебного слова program, за которым следует имя программы. За заголовком следует раздел объявлений. Так, инструкция объявления константы в общем виде выглядит так: имя константы = значение;

Например:

const

min = 0; (константа целого типа)

p = 2.7; (константа вещественного типа)

name = ‘Pascal’; (константы символьного и строкового типа) ok = True; (константа логического типа)

140

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]