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

Учебное пособие 1601

.pdf
Скачиваний:
5
Добавлен:
30.04.2022
Размер:
1.46 Mб
Скачать

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

Но, между алгоритмом и программой существует ещѐ промежуточное звено-структурная

схема алгоритма.

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

Такой основной набор геометрических фигур следующий:

 

 

начало

 

- Начало (конец) схемы;

 

 

 

 

 

 

- Операция ввода (вывода)

 

 

 

 

 

 

данных

; Ввод

 

 

 

 

 

 

 

 

 

 

- Математическая операция

 

 

 

 

 

 

 

 

 

 

 

 

 

Х = Х + 1

 

 

 

 

(

операция

 

 

 

 

 

 

 

 

присваивания);

 

 

 

 

 

 

 

 

 

Х > 0

 

 

- Операция условного

 

 

 

 

 

перехода

(проверка условия);

i=1,n

- Операция цикла с заданием

начала и конца цикла;

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

Пусть требуется вычислить:

s n ai

i 1

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

начало

Ввод ai

S=0

i =1, n

s=s+a

ВыводS

Рис.3.1. Структурная схема алгоритма

Здесь операция ввода ai может быть

осуществлена с помощью операции цикла. Каждой геометрической фигуре на рис.3.1 в программе должен соответствовать определѐнный оператор.

3.3 Основные принципы реализации программы на ЭВМ.

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

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

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

системы входит

программа

компоновка, которая

перерабатывает

один или

 

несколько

объектных

модулей в абсолютный модуль.

 

 

Таким

образом,

исходная

программа,

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

Трансляторы языка Pascal от самых ранних версий до последней – Turbo Pascal 7.0 работают по компилирующему принципу.

К настоящему времени существует несколько версий компилятора Turbo Pascal (файлы): Turbo.exe, Bp.exe, Bpw.exe, tpc.exe и bpc.exe.

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

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

При этом в верхней строке редактора (EDIT) появляется диагностическое сообщение о причине ошибки (Error…). Все это позволяет очень быстро отладить (отредактировать) программу, т.е. устранить в ней синтаксические ошибки и добиться правильной ее работы (при многократном прогоне программы).

Работа оператора ЭВМ со средой Turbo Pascal приведена в соответствующих методических указаниях.

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

типы

 

 

 

Простые

 

 

Порядковые

 

 

Целый

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вещественные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Логическ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Структуирова

 

 

 

 

 

 

 

Символь

 

 

 

 

 

 

 

Массивы

 

 

 

 

 

 

 

 

 

нные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Перечис

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Записи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Указатели

 

 

 

 

 

 

 

Т

 

 

 

 

 

 

 

Множества

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

диапоз

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Строки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Файлы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Процедурные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Объекты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4. 2. 9. Структура типов данных.

Кроме того, как было отмечено, в языке Turbo Pascal предусмотрен механизм создания новых типов данных, благодаря чему общее количество типов, используемых в программах (описатель Type) может быть сколь угодно большим.

Следует иметь в виду, что в Turbo Pascal имеются дополнительные членовые типы для целочисленных и вещественных типов. Так для целочисленных типов, помимо типа Integer имеются и ряд других (см. табл. 4. 2.1), где имеется, например, тип Long Int , который допускает значения в диапазоне от –2147483648 до

2147483647.

Для содержания переменной типа LongInt в памяти выделяется 32 бита, в отличие от 16 битов, выделяемых для переменных типа Integer.

Таким образом, в таблице 4.2.1 указан диапазон допустимых значений для каждого из типов. Два целочисленных типа, Byte и ShortInt, используют только по 8 битов для каждого из своих значений (отличаются только диапазоном). Тип данных Word допускает только положительные целочисленные значение, поэтому его наибольшее допустимое значение вдвое превышает такое же значение для типа Integer. Все операции Turbo Pascal, применяемые к данным типа Integer, могут использоваться и с данными типов, перечисляемых в таблице 4.2.1.

ЦЕЛЫЕ ТИПЫ ДАННЫХ

Таблица 4.2.1.

 

 

 

ТИП

 

ДИАПОЗОН

ЗНАЧЕНИЙ

 

 

 

 

 

 

 

Integer

 

-32768.. 32767

 

ShotInt

 

-128.. 127

 

LongInt

 

-2147483648..

 

2147483647

 

 

 

 

 

 

Byte

0.. 255

 

Word

0.. 65535

 

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

ВЕЩЕСТВЕННЫЕ ТИПЫ ДАННЫХ Таблица 4.2.2

ТИП

 

ДИАПОЗОН ЗНАЧЕНИЙ

 

число

 

значащих

 

 

 

 

 

 

 

 

цифр

мантиссы Real

 

2.9Е

- 39.. 1.7Е38

1112

 

 

 

 

Single

 

1.5Е45.. 3.4Е38

 

7- 8

Double

 

5.0Е324.. 1.7Е308

 

1516

 

 

Extended

 

1.9Е4951.. 1.1Е4932

19-

23

 

 

 

 

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

Структуированные типы данных

Любой из структуированных типов (в языке Turbo Pascal их четыре: массивы, записи, множества и файлы) характеризуется множественностью образующих этот тип элементов, т. е. переменная …. Структуированного типа всегда имеет несколько компонентов. Каждый компонент, в свою очередь, может принадлежать структуированному типу, что позволяет говорить о возможной вложенности типов. В языке Turbo Pascal допускается произвольная глубина

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

В целях совместимости со стандартным языком Pascal в Turbo Pascal разрешается перед описанием структуированного типа ставить служебное (зарезервированное) слов PACKED, предписывающее комнилятору, по возможности, экономить память, отводимую под объекты структуированного типа; но комнилятор фактически игнорирует его указание: «упаковка» данных в языке Turbo Pascal осуществляется автоматически везде, где это возможно.

Массивы

Массивы в языке Turbo Pascal во многом схожи с аналогичными видами данных в других языках программирования, отличительная особенность массивов заключается в том, их компонентысуть данные одного типа (возможно структуированного), эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием порядкового номера его индекса, например:

Fyne did = array [1…9] of char;

Var

a: dig; Begin

A[3] = exp(3+5)/2; END.

Следует иметь в виду, что если массив не передаѐтся в процедуру или функцию, то можно просто (в отличие от данного примера):

VAR

a: array [1….9] of char

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

ЗАПИСИ

Запись, как и массив - сложная переменная с несколькими фиксированными компонентами, являющиеся родственными данными.

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

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

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

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