Автор: Пользователь скрыл имя, 27 Марта 2013 в 11:59, лекция
СОСТАВ ЯЗЫКА. Обычный разговорный язык состоит из четырех основных
элементов: символов, слов, словосочетаний и предложений. Алгоритми-
ческий язык содержит подобные элементы, только слова называют элемен-
тарными конструкциями, словосочетания-выражениями, предложения-опера-
торами.
цикле.
{}
Первый индекс определяет номер строки, второй - номер столбца.
Двумерные массивы хранятся в памяти ЭВМ по строкам.
Инициализация массивов (присвоение начальных значений всем компо-
нентам массивов) осуществляется двумя способами.
Первый
способ - с использованием
мер:
type Dim10= Array[1..10] of Real;
const
raM10: Dim10 = ( 0, 2.1, 4, 5.65, 6.1, 6.7, 7.2, 8, 8.7, 9.3 );
При
инициализации двумерных
входящих в него одномерных массивов записывается в скобках:
type Dim3x2= Array[1..3,1..2] of Integer;
const
iaM3x2: Dim3x2= ( (1, 2)
(3, 4)
(5, 6) );
Второй способ инициализации
- использование разновидности
ры FillChar:
FillChar( var V; NBytes: Word; B: Byte );
Эта процедура заполняет участок памяти однобайтовым значением. Напри-
мер, для обнуления массива A[1..10] of Real можно записать:
FillChar(A, 40, 0);
или
FillChar(A, SizeOf(A), 0);
{}
24. С Т Р О К И
Особое место в языке
ПАСКАЛЬ занимают массивы
ный ПАСКАЛЬ допускает два способа хранения символьных массивов в па-
мяти ЭВМ: распакованный и упакованный. Распакованные массивы символов
хранятся в памяти ЭВМ по одному символу в машинном слове, упакованные
- по одному символу в байте.
При описании упакованного
лов используют служебное слово PACKED, например:
var MAS: Packed Array[1..20] of Char;
Описание распакованного массива символов имеет вид:
var M: Array[1..20] of char;
Для преобразования
упакованную и наоборот, из упакованной в распакованную, в язык ПАС-
КАЛЬ введены две стандартные функции Pack, UnPack.
Упакованный
массив символов образует
строка может быть либо строковой константой, либо строковой перемен-
ной. Строковая константа, или строка, представляет собой совокупность
символов, заключенную в апострофы. Строка - это элементарная конс-
трукция языка ПАСКАЛЬ. Строковые константы могут входить в состав вы-
ражений. Как и числовые константы, они могут быть описаны в разделе
описания констант.
Строковые переменные - это одномерные упакованные массивы симво-
лов, для описания которых в TURBO PASCAL введен тип String.
Например, если строка содержит до 30 символов, ее тип будет опре-
делен как
type s= String[30];
Длина строки не может содержать более, чем 255 символов.
В TURBO PASCAL определено понятие строки переменной длины, в этом
случае ее описание задается как
type s= String;
Тип String без указания
длины совместим со всеми
Особенностью строковых переменных является то, что к ним можно об-
ращаться как к скалярным переменным, так и к массивам. Во втором слу-
чае применяется конструкция "переменная с индексом", что обеспечивает
доступ к отдельным символам строки. При этом нижняя граница идекса
равна 1. Отдельный символ строки совместим с типом Char.
В памяти ЭВМ строка занимает количество байтов, на единицу большее
ее длины. Нулевой байт строки содержит ее длину.
Для строк определены операции присваивания, слияния (конкатенации)
и сравнения.
Для сравнения строк
строк происходит посимвольно, начиная с первого символа. Строки рав-
ны, если имеют одинаковую длину и посимвольно эквивалентны.
Строки могут быть элементами списка ввода - вывода, при этом запи-
сывается имя строки без индекса.
При вводе строковых
переменных количество
быть меньше, чем длина строки. В этом случае вводимые символы разме-
щаются с начала строки, а оставшиеся байты заполняются пробелами. Ес-
ли количество вводимых символов превышает длину строки, лишние
символы отбрасываются.
Инициализация строк может производиться как с помощью типизирован-
ных констант:
const sName: String[9]= 'IBM PC/AT';
так и с использованием второй разновидности функции FillChar:
FillChar( var V; NBytes: Word; C: Char );
например:
FillChar(A, SizeOf(A), '0');
Для работы со строками в TURBO PASCAL включены процедуры и функ-
ции, которые обеспечивают редактирование и преобразование строк.
{}
25. П Р О Ц Е Д У Р Ы И Ф У Н К Ц И И
Алгоритм решения задачи
проектируется путем
дачи в отдельные подзадачи. Обычно подзадачи реализуются в виде подп-
рограмм.
Подпрограмма - это последовательность операторов, которые опреде-
лены и записаны только в одном месте программы, однако их можно
вызвать для выполнения из одной или нескольких точек программы. Каж-
дая подпрограмма определяется уникальным именем. В языке ПАСКАЛЬ су-
ществуют два типа подпрограмм - процедуры и функции.
Процедура и функция
- это именованная
и операторов. При использовании процедур или функций ПАСКАЛЬ - прог-
рамма должна содержать текст процедуры или функции и обращение к про-
цедуре или функции. Тексты процедур и функций помещаются в раздел
описаний процедур и функций.
{}
Процедура может содержать такие - же разделы описаний, что и ПАС-
КАЛЬ - программа, а именно: разделы описания модулей, меток, конс-
тант, типов, переменных, процедур и функций.
{}
ПЕРЕДАЧА ИМЕН ПРОЦЕДУР
И ФУНКЦИЙ В КАЧЕСТВЕ
задачах, особенно в задачах вычислительной математики, необходимо пе-
редавать имена процедур и функций в качестве параметров. Для этого в
TURBO PASCAL введен новый тип данных - процедурный или функциональ-
ный, в зависимости от того, что описывается.
Описание процедурных и
функциональных типов
описания типов:
type
FuncType = Function(z: Real): Real;
ProcType = Procedure (a,b: Real; var x,y: Real);
Функциональный
и процедурный тип
дуры и функции со списком формальных параметров, но без имени. Можно
определить функциональный или процедурный тип без параметров, напри-
мер:
type
Proc = Procedure;
После объявления процедурного или функционального типа его можно
использовать для описания формальных параметров - имен процедур и
функций.
Кроме
того, необходимо написать те
реальные процедуры или
имена которых будут передаваться как фактические параметры. Эти про-
цедуры и функции должны компилироваться в режиме дальней адресации с
ключом {$F+}.
Пример.
Составить программу для
tk
2t
I= S--------------- dt
sqrt(1-sin2t)
tn
по методу Симпсона. Вычисление
подинтегральной функции
помощью функции, имя которой передается как параметр. Значение опре-
деленного интеграла по формуле Симпсона вычисляется по формуле:
ISimps=2*h/3*(0.5*F(A)+2*F(A+
где A и B - нижняя и верхняя границы интервала интегрирования,
N - число разбиений интервала интегрирования,
h=(B-A)/N, причем N должно быть четным.
Program INTEGRAL;
type
Func= function(x: Real): Real;
var
I,TN,TK:Real;
N:Integer;
{$F+}
Function Q(t: Real): Real;
begin
Q:=2*t/Sqrt(1-Sin(2*t));
end;
{$F-}
Procedure Simps(F:Func; a,b:Real; N:Integer; var INT:Real);
var
sum, h: Real;
j:Integer;
begin
if Odd(N) then N:=N+1;
h:=(b-a)/N;
sum:=0.5*(F(a)+F(b));
for j:=1 to N-1 do
sum:=sum+(j mod 2+1)*F(a+j*h);
INT:=2*h*sum/3
end;
begin
WriteLn(' ВВЕДИ TN,TK,N');
Read(TN,TK,N);
Simps(Q,TN,TK,N,I);
WriteLn('I=',I:8:3)
end.
{}
26. О П Е Р А Т О Р Ы В Ы Х О Д А
Для завершения работы программ, процедур и функций без предвари-
тельного перехода по меткам к закрывающему end в TURBO PASCAL введены
процедуры Exit и Halt.
Вызов Exit завершает работу своего программного блока и передает
управление вызывающей программе. Если Exit выполняется в подпрограм-
ме, то выполнение этой подпрограммы прекратится, и далее будет выпол-
няться следующий за вызовом этой подпрограммы оператор. Если Exit вы-
полняется в основной программе, выход из нее будет эквивалентен ее
нормальному завершению.
Вызов процедуры Halt, где бы она не находилась, завершает работу
программы и передает управление операционной системе.
Процедура Halt имеет структуру Halt(n), где n - код возврата, ко-
торый может быть проанализирован операционной системой с помощью ко-
манды IF ERRORLEVEL. Значение n=0 соответствует нормальному заверше-
нию работы программы. Вызов процедуры Halt без параметра эквивалентен
вызову Halt(0).
27. М О Д У Л И
Модуль (UNIT) в TURBO PASCAL - это
особым образом оформленная
лиотека подпрограмм. Модуль в отличие от программы не может быть за-
пущен на выполнение самостоятельно, он может только участвовать в
построении программ и других модулей.
Модули позволяют создавать личные библиотеки процедур и функций и
строить программы практически любого размера.
Модуль в TURBO PASCAL представляет собой отдельно хранимую и неза-
висимо компилируемую
В общем случае модуль - это совокупность программных ресурсов,
предназначенных для использования другими программами. Под программ-
ными ресурсами понимаются любые элементы языка TURBO PASCAL: констан-
ты, типы, переменные, подпрограммы. Модуль сам по себе не является
выполняемой программой, его элементы используются другими программны-
ми единицами.
Все программные элементы модуля можно разбить на две части:
- программные элементы, предназначенные для использования другими
программами или модулями, такие элементы называют видимыми вне моду-
ля;
- программные элементы, необходимые только для работы самого моду-
ля, их называют невидимыми или скрытыми.
В соответствии с этим модуль, кроме заголовка, содержит две основ-
ные части, называемые интерфейсом и реализацией.
В общем случае модуль имеет следующую структуру:
unit <имя модуля>; {заголовок модуля}
interface
{ описание видимых программных элементов модуля }
{ описание скрытых программных элементов модуля }
begin
{ операторы инициализации элементов модуля }
end.
В частном случае модуль
может не содержать части
ти инициализации, тогда структура модуля будет такой:
unit <имя модуля>; {заголовок модуля}
interface
{ описание видимых программных элементов модуля }
implementation
end.
Использование в модулях процедур и функций имеет свои особенности.
Заголовок подпрограммы содержит все сведения, необходимые для ее вы-
зова: имя, перечень и тип параметров, тип результата для функций, эта
информация должна быть доступна для других программ и модулей. С дру-
гой стороны, текст подпрограммы, реализующий ее алгоритм, другими
программами и модулями не может быть использован. Поэтому заголовок
процедур и функций помещают в интерфейсную часть модуля, а текст - в
часть реализации.
Интерфейсная часть модуля
содержит только видимые (
других программ и модулей) заголовки процедур и функций (без служеб-
ного слова forward). Полный текст процедуры или функции помещают в
часть реализации, причем заголовок может не содержать список формаль-
ных параметров.
Исходный
текст модуля должен быть
тивы Make подменю Compile и записан на диск. Результатом компиляции
модуля является файл с расширением .TPU (Turbo Pascal Unit). Основное
имя модуля берется из заголовка модуля.
Для подключения модуля к программе необходимо указать его имя в
разделе описания модулей, например:
uses CRT, Graph;
В том случае, если имена переменных в интерфейсной части модуля и
в программе, использующей этот модуль, совпадают, обращение будет
происходить к переменной, описанной в программе. Для обращения к пе-
ременной, описанной в модуле, необходимо применить составное имя,
состоящее из имени модуля и имени переменной, разделенных точкой.
Например, пусть имеется модуль, в котором описана переменная К:
unit M;
interface
var K: Integer;
implementation
.................
end.
Пусть программа, использующая этот модуль, также содержит перемен-
ную К:
Program P;
uses M;
var K: Char;
begin
.............
end.
Для того, чтобы в программе P иметь доступ к переменной K из моду-
ля M, необходимо задать составное имя M.K.
Использование составных имен применяется не только к именам пере-
Информация о работе О с н о в н ы е п о н я т и я ал г о р и т м и ч е с к о г о я з ы к а