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

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Заголовок программы в языке Паскаль необязателен и используется, в основном, для простоты работы с программами.
Список используемых модулей может включать в себя стандартные модули Turbo Pascal и модули, созданные пользователем.
Раздел описаний, также как и предыдущие разделы, не является обязательным. Подразделы описаний могут повторяться многократно в любом порядке, но если в описании элемента «а» используется элемент «b», то элемент «а» должен быть описан раньше.
Таблица 1.1 Общая структура программы на языке
Описание |
Текст в программе |
Заголовок программы |
Program Name; |
Список используемых модулей |
Uses Crt, Graph, MyMod; |
Описания |
|
описания меток |
Label L1, L2; |
описания констант |
Const pi=3.14; n=10; Bool=True; Str=Result; |
описания типов |
Type Vector = array[1..n] of Integer; |
описания переменных |
Var k,m: integer; S: real; a,b: Vector; |
|
Procedure …; Function …; |
Раздел операторов (тело программы) ввод данныхж вычисления; вывод на печать. |
Begin {операторы} End. |
Все типы данных в языке паскаль можно разделить на две группы: стандартные (предопределенные) и пользовательские.
К стандартным типам относятся:
Символьный, целые и булевские типы относят к порядковым типам. Порядковый тип это упорядоченная последовательность, каждый элемент которой имеет свой порядковый номер.
Таблица 1.2 Примеры порядковых номеров
Тип |
Порядковый номер |
Целый |
Значение числа |
10 |
10 |
134 |
134 |
Булевский: |
|
True |
Любое число, отличное от 0 |
False |
0 |
Символьный |
|
a |
97 |
b |
98 |
m |
109 |
! |
33 |
К любой переменной порядкового типа можно применить стандартные функции.
Ord возвращает порядковый номер.
Pred возвращает предыдущее значение, если применяется к первому значению, то возвращается порядковый номер последнего значения,
Succ возвращает следующее значение, если применяется к последнему значению, то возвращается порядковый номер первого значения,
Таблица 1.3 Примеры работы функций Ord, Pred и Succ
Тип переменной |
Значение b |
Ord(b) |
Pred(b) |
Ord(Pred(b)) |
Succ(b) |
Ord(Succ(b)) |
Целый |
b:=10 |
10 |
9 |
9 |
11 |
11 |
b:= 10 |
10 |
11 |
11 |
9 |
9 |
|
Булевский |
b:=True |
1 |
False |
0 |
True |
2 |
b:=False |
0 |
True |
1 |
True |
1 |
|
Символьный |
b:=d |
100 |
c |
99 |
e |
101 |
b:=n |
110 |
m |
109 |
o' |
111 |
|
b:=+ |
43 |
* |
42 |
, |
44 |
Виды операторов:
Простые операторы не содержат в себе другие операторы.
Сложные операторы содержат простые операторы. Например, составной и условный операторы, операторы цикла, выбора и т.д.
Составные операторы содержат несколько операторов, которые заключаются в операторные скобки Begin … End.
Оператор присваивания имеет вид: V:= A, где V имя переменной; А выражение, := знак присваивания.
При этом переменная V и выражение А должны иметь один и тот же тип.
Разрешается присваивать переменной типа REAL выражение типа INTEGER, но нельзя присваивать выражение типа REAL переменной INTEGER.
Правила написания арифметических выражений: арифметические выражения должны быть записаны в строчку, операции должны быть указаны явно. Результатом вычисления арифметических выражений являются значения типа INTEGER (I, целый) или REAL (R, вещественный).
Таблица 1.4 Знаки арифметических операций и типы переменных
Название операции |
Символ |
Тип переменных |
Тип результата |
умножение |
* |
I, R |
I, R |
деление |
/ |
I, R |
R |
деление нацело |
DIV |
I |
I |
вычисление остатка от деления |
MOD |
I |
I |
сложение |
+ |
I, R |
I, R |
вычитание |
|
I, R |
I, R |
Приняты следующие правила, определяющие приоритет операций:
• операции умножения и деления (* ,/ , DIV , MOD) имеют более высокий приоритет, чем операции сложения и вычитания;
• для изменения порядка вычисления используются круглые скобки;
• скобочные структуры могут быть вложены друг в друга.
Синтаксис операций DIV, MOD: n DIV m или n MOD m.
Например, 174 = 10*17+4, т.е. при делении на 17 получается 10 (остаток 4).
Тогда результаты операций будут следующими:
174 DIV 17 = 10;
174 MOD 17 = 4.
Логические выражения используют операции отношения (равно =, не равно < >, меньше <, больше >,меньше или равно <=, больше или равно >=) и булевские (логические) операции: not, and, or, xor.
Логическое отрицание (инверсия) в Паскале обозначается not; выражение not А истинно, если А ложно, и, наоборот, ложно, если А истинно.
Логическое умножение (конъюнкция) обозначается and; выражение А and В истинно, если истинны оба выражения.
Логическое сложение (дизъюнкция) обозначается or; выражение А or В ложно, если ложны оба выражения, и истинно, если истинно хотя бы одно из этих выражений.
Исключающее ИЛИ обозначается хor; выражение А хor В истинно, если истинно только одно выражение (либо А, либо В).
Приоритет логических операций:
Булевской переменной можно присваивать выражение булевского типа. Использование в программах переменных булевского типа (с обязательным описанием Var p: Boolean;) значительно упрощает алгоритм, размер программы и, соответственно, время ее выполнения.
Пример: Вывести на экран TRUE, если квадратное уравнение имеет хотя бы один корень, и FALSE, если корней нет.
Основная часть программы:
После описаний и ввода коэффициентов квадратного уравнения вычисляем переменную D дискриминант.
1 способ (без использования булевских переменных):
if (D<0) then
WriteLn(FALSE)
else
WriteLn(TRUE);
2 способ (с введением булевской переменной):
p:= D>=0;
WriteLn(p);
Примечание: Невозможно применение двойных неравенств, выражение 2 < a < 7 записывается в виде (2 < a) and (a < 7).
Таблица 1.5 Стандартные математические функции и их типы
Математическая функция |
Функция на языке Паскаль |
Тип аргумента |
Тип функции |
Примечание |
|X| модуль числа |
ABS(X) |
R, I |
R, I |
|
X2 |
SQR(X) |
R, I |
R, I |
|
SQRT(X) |
R, I |
R |
||
sin X |
SIN(X) |
R, I |
R |
Значение Х вводится в радианах |
cos X |
COS(X) |
R, I |
R |
|
arctg X |
ARCTAN(X) |
R, I |
R |
|
eX |
EXP(X) |
R, I |
R |
|
ln X |
LN(X) |
R, I |
R |
|
[X] целая часть Х |
TRUNC(X) |
R, I |
I |
|
округление Х до целого |
ROUND(X) |
R, I |
I |
|
Определение четности |
ODD(X) |
I |
Boolean |
TRUE, если Х-нечет FALSE, если Х-чет. |
Примечание: В языке Паскаль нет некоторых математических операций и функций. В этих случаях используется набор стандартных функций.
Например:
1) Возведение в степень вместо AВ записывается EXP(В*LN(A));
2) Логарифм по произвольному основанию вместо logAX записывается LN(X)/LN(A), например, lgX представляется в виде LN(X)/LN(10);
3) tgX и ctgX соответственно SIN(X)/COS(X) и COS(X)/ SIN(X);
4) arccosX угол, косинус которого равен Х, при ХЄ[-1; 1].
Вместо arccosX записываем ARCTAN(SQRT(1/SQR(X) 1)). Или ARCTAN(SQRT(1SQR(X))/X) при Х≠0 и при Х=0 arccosX=π/2. Аналогично arcsinX вычисляется выражением: ARCTAN(X/SQRT(1SQR(X))) при Х≠1 и при Х=1 arcsinX=π/2 и так далее.
Вывод на экран производится при помощи встроенных процедур Write(переменная1, переменная2, …, переменнаяN) печать,
WriteLn(переменная1, переменная2, …, переменнаяN) печать с новой строки.
Ввод с экрана (чтение) реализуется аналогично: Read(переменные) или ReadLn(переменные).
Например, необходимо считать с экрана монитора значение переменной n. Для удобства обычно сначала выводят строку:
Write('n = ');
а затем считываю значение:
Read(n);
Форматный вывод
Для вывода чисел предусмотрен форматный вывод.
Для всех типов целых чисел выводится длина (количество знаков в числе), например, Write(n:5); будет выделять для вывода числа 5 знаков, т.е. если числа двузначные, то между ними будет интервал в 3 пробела.
Для вывода действительных чисел используется «двойной» формат, который включает общее количество разрядов и количество знаков после запятой. Например, Write(а:10:3); будет выводить число с 3 знаками после запятой. Общее количество разрядов 10. Из них 3 после запятой, 1 выделяется для самой запятой и 1 выделяется для знака числа (+ или ), причем + по умолчанию не печатается. Это означает, что данный формат вывода предусматривает 5 знаков перед запятой, и возможно превышение формата.
При форматном выводе необходимо предварительно оценивать количество знаков в выводимых числах.
Работа с файлами (ввод/вывод)
Сначала необходимо описать переменную файла, например: Var f: file;
Затем необходимо связать физический файл с файловой переменной. Для этого используется процедура Assign, например: Assign(f, NameFile1.dat) работа с файлом NameFile1.dat из текущей директории. Также можно записывать полное имя файла (с указанием полного пути).
Открытие файлов выполняется процедурами Reset и Rewrite.
Процедура Reset(f) открывает существующий физический файл.
Процедура Rewrite(f) создает новый физический файл. Если файл с таким именем уже существует, то он удаляется, и на его месте записывается новый пустой файл.
Закрытие файлов выполняется процедурой Close: Close(f).
При открытии указатель текущей позиции устанавливается в начало файла.
Таблица 1.6 Функции, используемые при работе с файлами
Функция |
Описание |
Тип аргумента |
Тип функции |
EOF (F) |
TRUE, конец файла FALSE, нет конца |
file |
boolean |
EOLN (F) |
TRUE, конец строки FALSE, нет конца |
File |
boolean |
Например, необходимо вычислить сумму всех чисел, находящихся в файле, при этом заранее неизвестно их количество. Результат вывести на экран монитора. Это можно сделать при помощи программы
Program SummaElemFile;
Uses Crt;
Var x, Sum: real;
f: text;
Begin
ClrScr;
Assign(f, NameFile1.dat);
Reset(f);
Sum:=0;
While not Eof(f) do
begin
Read(f, x);
Sum:=Sum+x;
end;
Close(f);
WriteLn(Summa of files elements =, Sum);
Readkey;
End.
Оператор цикла со счетчиком (с параметром) for подходит для таких вычислений, когда известны начальное и конечное значения счетчика.
При увеличении значения используется следующая форма:
for i:=i1 to i2 do Оператор;
где i1 начальное значение, i2 конечное значение, причем, для выполнения цикла хотя бы один раз, обязательно должно быть i1<=i2. Оператор может быть как простым, так и составным. После выполнения Оператора (тела цикла) увеличение значения счетчика происходит автоматически. Т.е. специальный оператор (например, i:=i+1) не нужен.
При уменьшении значения используется следующая форма:
for i:=i2 downto i1 do Оператор;
где i2 начальное значение, i1 конечное значение, причем, i2>=i1. Аналогично, не требуется специальный оператор для уменьшения значения счетчика.
Ограничения: шаг изменения счетчика может быть только +1 или 1, переменная, используемая в роли счетчика, должна быть только порядкового типа и должна быть локальной для того блока, в котором используется оператор for.
Порядок работы:
Переменной-счетчику присваивается первое значение, затем вычисляется тело цикла, значение счетчика увеличивается (или уменьшается) на 1. Это выполняется до тех пор, пока значение счетчика не превысит конечного значения. После выхода из цикла значения переменной счетчика имеет значение, на 1 больше/меньше конечного.
Оператор цикла с предусловием while позволяет многократно выполнять некоторые действия в зависимости от условия. На языке Паскаль этот цикл реализуется следующим образом:
while Условие do Оператор;
Оператор (или тело цикла), как и в предыдущем случае, может быть как простым, так и составным. Он выполняется до тех пор, пока Условие истинно. Дословно: пока (while) Условие верно, выполнять (do) тело цикла.
Порядок работы:
Сначала вычисляется Условие выражение или переменная булевского типа. Если оно равно FALSE, то цикл не выполняется и управление передается следующему оператору. Если выражение TRUE, то цикл выполняется один раз и снова вычисляется Условие. Когда значение Условия примет значение FALSE, работа цикла завершается.
Оператор цикла с постусловием repeat позволяет многократно выполнять некоторые действия в зависимости от условия. На языке Паскаль этот цикл реализуется следующим образом:
repeat
Оператор 1;
Оператор 2;
…
until Условие;
Дословно: повторять (repeat) выполнение операторов, до тех пор, пока (until) Условие не станет верным.
Порядок работы:
Сначала выполняются все операторы, при этом не требуется использование составного оператора. Затем вычисляется Условие выражение или переменная булевского типа. Цикл продолжается до тех пор, пока Условие принимает значение FALSE, и заканчивается, если Условие становится равным TRUE.
Таблица 1.7 Отличия и особенности работы различных операторов цикла
цикл со счетчиком for |
цикл с предусловием while |
цикл с постусловием repeat |
|
Начальная установка переменной счетчика |
Не требуется |
Необходимы начальные установки переменных, управляющих условием |
|
Изменение переменной |
Не допускается в теле цикла, происходит автоматически |
Необходимо присутствие операторов, изменяющих переменные условия, чтобы цикл мог завершиться |
|
Условия работы |
Количество выполнений цикла неизменно, выполняется для значений переменной от начальной до конечной. Может не выполняться ни разу. |
Работает, пока Условие истинно, завершается, когда Условие становится ложным. Может не выполняться ни разу. |
Работает, пока Условие ложно, завершается, когда условие становится истинным. Обязательно выполняется минимум 1 раз. |
Использование более одного оператора |
Необходимо использовать составной оператор. |
Использование составного оператора не требуется. |
|
Пример вычисление суммы элементов массива |
S:=0; for i:=1 to n do S:=S+a[i]; |
S:=0; i:=1; while i<=n do begin S:=S+a[i]; i:=i+1; end; |
S:=0; i:=1; repeat S:=S+a[i]; i:=i+1; until i>n; |
Ход работы цикла может быть нарушен оператором безусловного перехода goto (см. п.1.1.9) или операторами Break и Continue.
Оператор Break прерывает действие текущего цикла и передает управление тому оператору, который выполняется после окончания цикла.
Оператор Continue прерывает выполнения тела цикла, но из цикла не выходит. Т.е. после оператора Continue не выполняется следующий оператор в цикле, а проверяется условие окончания цикла и, если условие выполняется, то тело цикла будет продолжать выполняться. Примеры использования этих операторов можно найти в разделе 1.1.10.
Оператор безусловного перехода goto используется в тех случаях, когда необходимо изменить порядок выполнения программы, чтобы выполнялся не следующий оператор, а другой. Использование оператора перехода требует введение в программу меток. Метка может предшествовать любому оператору и отделяется от него двоеточием. Должна быть предварительно описана в разделе Label. Используется очень редко, только в случае, если надо передать управление впереди стоящему оператору. Необходимо учитывать, что при использовании оператора перехода, если он не является последним, также необходимо ставить метку на следующий за ним оператор.
В Turbo Pascal есть два условных оператора: if и case, но исторически сложилось, что оператор if называют условным, а оператор case оператором выбора или варианта.
Условный оператор if используется в полной и неполной форме.
Неполная форма: if Условие then Оператор1;
полная форма: if Условие then Оператор1 else Оператор2;
Если условие верно (TRUE), то выполняется Оператор1, если условие ложно (FALSE), то в случае неполной формы выполняется следующий оператор, в случае полной формы Оператор2.
Особенности: Выбирает только одно из двух возможных действий.
Нельзя ставить символ «;» ни перед then, ни перед else. Только внутри составных операторов (Оператор1 и Оператор2 могут быть как простыми, так и составными).
Оператор выбора case позволяет выполнить одно из нескольких действий в зависимости от значения переменной-переключателя.
case Переключатель of
Список1: Оператор1;
Список2: Оператор2;
…
СписокN: ОператорN
else ОператорEnd
end;
Порядок работы: Если переменная-переключатель принимает одно из значений Списка1, то выполняется Оператор1, а остальные пропускаются и т.д. ОператорEnd будет выполняться, если значение переключателя не совпало ни с одним из значений предыдущих списков.
Необходимо также учесть:
Примеры использования
1. Ввести с экрана символ. Определить вид символа: цифра, буква и т.п.
Var MyChar: Char;
Begin
ReadLn(MyChar);
case MyChar of
0..9: WriteLn(Это цифра);
A..Z: WriteLn(Это прописная буква);
a..z: WriteLn(Это строчная буква)
else WriteLn(Это символ)
end;
End.
2. Ввести номер месяца. Напечатать номер квартала.
Var MyNum: Integer;
Begin
ReadLn(MyNum);
case MyChar of
1..3: WriteLn(I);
4..6: WriteLn(II);
7..8: WriteLn(III);
9..12: WriteLn(IV)
else WriteLn(Номер месяца должен быть от 1 до 12!)
end;
End.
Считывание (ввод) одномерного массива известной длины из файла
Var x: array [1..20] of real;
i: integer;
f: text;
Begin
Assign(f, NameFile.dat);
Reset(f);
for i:=1 to 20 do
Read(f, x[i]);
Close(f);
End.
Считывание одномерного массива неизвестной длины из файла, определение размера массива
Var x: array [1..100] of real;
i,N: integer;
f: text;
Begin
Assign(f, NameFile.dat);
Reset(f);
i:=0;
While not Eof(f) do
begin
i:=i+1;
Read(f, x[i]);
end;
N:=i1;
Close(f);
End.
Запись (вывод) одномерного массива в файл
Var x: array [1..20] of real;
i,N: integer;
f2: text;
Begin
Assign(f2, NameFile.rez);
ReWrite(f2);
for i:=1 to 20 do
Write(f2, x[i]:10:3);
Close(f2);
End.
При выводе массива числа записываются подряд, поэтому необходимо всегда делать форматный вывод (см. п.1.1.7).
Вычисление наибольшего элемента одномерного массива
Var x: array [1..100] of real;
max: real;
i,N, Nmax: integer;
Begin
max:=x[1];
for i:=2 to N do
if (x[i]>max) then
begin
max:=x[i];
Nmax:=i;
end;
End.
В результате работы программы вычисляется значение max, равное наибольшему элементу массива и Nmax номер наибольшего элемента. Необходимо учесть, что эта программа не печатает значения. Для печати необходимо использовать оператор Write.
Для нахождения минимального (наименьшего) элемента программа аналогичная, только для удобства вводятся переменные min, Nmin и в условном операторе if изменяется условие: if (x[i]<min) then…
Нахождение массива, состоящего из определенных элементов исходного массива
j:=0;
n2:=0;
for i:=1 to n do
if (Условие) then
begin
j:=j+1;
b[j]:=a[i];
end;
n2:=j;
В результате получаем массив b, содержащий элементы исходного массива, удовлетворяющие «Условию» и число n2 количество элементов полученного массива. Условие определяется в зависимости от поставленной задачи. Некоторые примеры условий представлены в таблице 1.8.
Таблица 1.8 Определение «Условия»
Условие задания |
«Условие» в программе |
Тип элементов массива |
Найти положительные элементы |
a[i] > 0 |
Для целых и действительных типов |
Найти отрицательные элементы |
a[i] < 0 |
|
Найти неположительные элементы |
a[i] ≤ 0 |
|
Найти неотрицательные элементы |
a[i] ≤ 0 |
|
Найти четные элементы |
a[i] mod 2 = 0 или not odd(a[i]) |
Только для целых типов |
Найти нечетные элементы |
a[i] mod 2 <> 0 или odd(a[i]) |
|
Найти все элементы, делящиеся на n |
a[i] mod п = 0 |
|
Найти все элементы, не делящиеся на n |
a[i] mod п <> 0 |
Нахождение первого положительного элемента массива
Var
a: mass;
i, Num, firstPol: integer;
Begin
Num:=0;
firstPol:=0;
for i:=1 to n do
if a[i] > 0 then
begin
firstPol:= a[i];
Num:=i;
Break;
end;
if firstPol = 0 then
WriteLn(Net poloz. elementov);
End.
Для нахождения первого отрицательного элемента, первого четного элемента и т.д. необходимо только изменить условие.
Нахождение последнего положительного элемента массива
Программа аналогична предыдущей, только перебор значений элементов массива необходимо проводить не с начала, а с конца:
for i:=n downto 1 do
и т.д.
Сортировка одномерного массива по возрастанию
for i:=1 to N1 do
for j:=i+1 to N do
if a[i]>a[j] then
begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
end;
В результате работы программы заданный массив пересортировывается в порядке возрастания. При этом начальный массив не сохраняется.
Для сортировки по убыванию необходимо изменить условие в операторе if.
Если необходимо повторять определенную последовательность действий в нескольких местах программы, то используются процедуры и функции.
Современный стиль программирования такой способ программирования, когда в главной программе практически отсутствуют операторы, а есть только функционально значимые процедуры. Сейчас в основном используется технология структурного программирования, которая предполагает блочно-модульное построение программы.
Наиболее часто употребляемые библиотечные процедуры и функции называют стандартными. Некоторые стандартные функции и процедуры были описаны ранее (это стандартные математические функции, процедуры ввода-вывода и т.п.).
Если планируется использование процедур во многих программах, то эти процедуры помещаются в отдельный модуль.
Процедуры и функции находятся в разделе описаний (см. табл. 1.1).
Процедура независимая часть программы, предназначенная для выполнения повторяющихся действий. Она состоит из заголовка и тела. По структуре она похожа на мини-программу. Иногда процедуру называют подпрограммой.
Заголовок процедуры в общем случае выглядит так:
PROCEDURE <имя> (<список формальных параметров>);
Имя процедуры ее название. Обычно процедуры называются так, чтобы было понятно, для чего она предназначена.
Формальные параметры это переменные, через которые передаются значения из программы в процедуру и обратно. Используются при описании процедуры.
Список формальных параметров выглядит так:
(Парам1:Type1; Парам2:Type2;… VAR ПарамN:TypeN…);
При этом параметры, стоящие перед VAR это параметры, передаваемые в процедуру (параметры-значения), а после VAR параметры, вычисляемые в процедуре или результат работы процедуры (параметры-переменные).
Особенности:
Const n=10;
Type Matr = array[1..n] of real;
Фактические параметры это идентификаторы конкретных переменных, используемые при вызове процедуры.
Вызов процедуры в программе осуществляется следующим образом:
<имя> (<список фактических параметров>);
Список фактических параметров выглядит так:
(Парам1, Парам2, … ПарамN);
Пример. Векторное произведение.
Необходимо вычислить векторное произведение Для этого сначала вычисляется векторное произведение , а затем вычисляется
Program NameProg;
Const n=3;
Type Vector = array[1..n] of real;
Var
i: integer;
x,y,z,rez: Vector;
Procedure VectMult (a,b: Vector; var c: Vector);
Begin
c[1]:= a[2]*b[3] a[3]*b[2];
c[2]:= a[3]*b[1] a[1]*b[3];
c[3]:= a[1]*b[3] a[3]*b[1];
End;
Begin
VectMult (x,y,z);
VectMult (x,z,rez);
End.
Формальные параметры здесь это a, b, c, а фактические при первом вызове процедуры x,y,z и при втором x,z,rez.
Функции вычисляют только одно единственное значение простого типа или указатель. Общая структура функции совпадает со структорой процедуры.
Заголовок функции в общем случае выглядит так:
FUNCTION <имя> (<список форм. параметров>): <тип результата>;
Вызывается просто по имени.
Пример1. Вычисление синуса угла, заданного в градусах
Program NameProg;
Var
i: integer;
x,y,z: real;
Function SinGrad(x: real): real;
Begin
SinGrad := sin(x*3,1415926/180);
End;
Begin
y:= 5* SinGrad(x) 2 sqr(x);
z:= sqr( sqr(x))/7 13* SinGrad(x) 2;
End.
Пример2. Вычисление длины вектора
Program NameProg;
Const n=3;
Type Vector = array[1..n] of real;
Var
DLx, DLy: real;
x,y: Vector;
Function DlVect(a: Vector): real;
Var i: integer;
Begin
DlVect:=0;
for i:=1 to 3 do
Begin
DlVect:= DlVect+sqr(a[i]);
End;
End;
Begin
DLx:= DlVect(x);
DLy:= DlVect(y);
End.
Пример 3. Вычисление котангенса угла в градусах
Program NameProg;
Var
a,y: real;
Function CtgGrad (a: real): real;
Const pi=3,14;
Var x: real;
Begin
x:=a*pi/180;
if (sin(x) <> 0) then
ctgGrad:=cos(x)/sin(x)
else
WriteLn(ctg не существует);
End;
Begin
y:=ctgGrad(x);
End.
Во многих задачах, особенно в задачах вычислительной математики, необходимо передавать имена процедур и функций в качестве параметров. Для этого в Турбо Паскаль Borland введен новый тип данных процедурный или функциональный, в зависимости от того, что описывается. В стандартном языке Паскаль такого типа нет.
Если в подпрограмме необходимо задавать различные функции, то в описании необходимо предусмотреть формальный параметр-функцию.
Например, Function Integral(a,b:real; Function f(x:real):real): real;
Можно вводить описание процедурных и функциональных типов в разделе описания типов:
type
FuncType = Function(x: Real): Real;
ProcType = Procedure (a,b: Real; var x,y: Real);
Функциональный и процедурный тип определяется как заголовок процедуры и функции со списком формальных параметров, но без имени.
После объявления процедурного или функционального типа его можно использовать для описания формальных параметров имен процедур и функций. Кроме того, необходимо написать те реальные процедуры или функции, имена которых будут передаваться как фактические параметры. Эти процедуры и функции должны компилироваться в режиме дальней адресации (far) с ключом {$F+}.
Модули (объекты UNIT) это комплекс специально подобранных процедур и функций, которые хранятся на диске в откомпилированном виде (файлы с расширением tpu).
Наиболее часто используемые готовые модули:
для управления режимом экрана модуль Crt,
для создания программ интерфейса, рисования модуль Graph,
для обработки прерываний модуль DOS.
Возможно создание своей собственной библиотеки процедур и функций, объединение их в модуль, компиляция и дальнейшее использование в своих программах.
Borland Pascal содержит следующие стандартные модули:
Crt, Dos, Graph, Graph3, Objects, ODialogs, Overlay, Printer, Strings, System, Turbo3, WinAPI, WinCrt, WinDOS, WinPrn, WinProcs,WinTypes.
Данные стандартные модули обеспечивают поддержку всех ваших программ на Borland Pascal и хранятся в отдельных файлах TPW.TPL (для среды Windows), TPP.TPL (для защищенного режима DOS) или TURBO.TPL (для реального режима DOS).
Любой модуль подобен отдельной программе Pascal: он может иметь основную операторную часть, которая вызывается перед началом вашей программы и в которой можно производить любую необходимую инициализацию.
1.1.11.1 Модуль System
Модуль содержит базовые средства языка, которые поддерживают ввод-вывод, работу со строками, операции с плавающей точкой и динамическое распределение памяти. Этот модуль автоматически используется во всех программах, и его не требуется указывать в операторе Uses. Он содержит все стандартные и встроенные процедуры, функции, константы и переменные Паскаля.
1.1.11.2 Модуль Crt
Модуль предназначен для организации эффективной работы с экраном, клавиатурой и встроенным динамиком.
Таблица 1.9. Процедуры и функции модуля Crt
Имя |
Назначение |
Процедуры задания режимов работы |
|
TextMode |
Задание текстового режима |
Процедуры управления цветом |
|
High Video |
Задание высокой яркости символов |
Процедуры работы с экраном |
|
ClrEol |
Удаление символов от курсора до конца строки |
Функции работы с экраном |
|
WhereX |
Текущая координата X курсора |
Функции работы с клавиатурой |
|
KeyPressed |
Проверка нажатия клавиши |
Процедуры управления звуком |
|
Sound |
Включение звука |
Процедуры разнообразного назначения |
|
Delay AssignCrt |
Задержка выполнения программы |
1. Ознакомиться с основными теоретическими сведениями.
2. Составить алгоритм программы.
3. Составить программу на языке Паскаль для своего варианта задания, отладить в среде TurboPascal, получить результат.
4. Оформить отчет.
Цель работы: Получить навыки работы в составлении программ с двумерными массивами, научиться сортировать числовые данные.
ВАРИАНТЫ ИНДИВИДУАЛЬНЫХ ЗАДАНИЙ
Задание 1.
Задание 2.
Задан массив целых чисел a [1..3].
Цель работы: Ознакомиться с понятием глобальных и локальных переменных, формальных и фактических параметры. Научиться составлять программы на языке Паскаль с применением внутренних подпрограмм (процедур, функций) и внешних подпрограмм.
Необходимые математические формулы:
Обратные тригонометрические функции:
Гиперболические функции:
Расстояние между двумя точками в пространстве:
Уравнение прямой на плоскости, проходящей через две точки:
где
Точка находится внутри круга с центром в точке (х0, у0) и радиусом R, если выполняется неравенство: (х x0)2 + (y у0)2 ≤ R2.
Точка находится вне круга с центром в точке (х0, у0) и радиусом R, если выполняется неравенство: (х x0)2 + (y у0)2 > R2.
ВАРИАНТЫ ИНДИВИДУАЛЬНЫХ ЗАДАНИЙ
Задание 1.
Задание 2.
Составить процедуру вычисления значения интеграла на заданном промежутке, используя формулу трапеций:
Использовать формальный параметр-функцию.
Значения a и b также включить в список параметров процедуры.
Значение h выбрать равным 0,05.
Значение п вычислить по формуле: .
Учесть, что
Составить программу вычисления интеграла для своего варианта задания. Вывести результат на экран. Данные для своего варианта задания взять из таблицы:
№ |
a |
b |
f(x) |
1 |
1 |
12 |
7th(3x21) |
2 |
2 |
11 |
3cth(2x2+1) |
3 |
3 |
15 |
4th(x2+1) |
4 |
4 |
14 |
5cth(x2/2+1) |
5 |
5 |
13 |
6ch(2x21) |
6 |
6 |
17 |
8ch(4x2+3) |
7 |
7 |
16 |
2sh(6x2+7) |
8 |
-1 |
9 |
9sh(x2/2+1) |
9 |
-2 |
13 |
7cos(2x23) |
10 |
-3 |
15 |
6cos(4x2+3) |
СОДЕРЖАНИЕ
[0.1] 1.1 Теоретические сведения [0.1.1] 1.1.1 Структура программы в языке Паскаль [0.1.2] 1.1.2 Основные типы данных [0.1.3] 1.1.3 Оператор присваивания [0.1.4] 1.1.4 Арифметические выражения [0.1.5] 1.1.5 Логические выражения [0.1.6] 1.1.6 Основные стандартные функции языка Паскаль [0.1.7] 1.1.7 Основные функции ввода/вывода [0.1.8] 1.1.8 Операторы цикла [0.1.9] 1.1.9 Операторы перехода (безусловный и условные) [0.1.10] 1.1.10 Работа с массивами [0.1.11] 1.1.11 Процедуры и функции. Модули. [0.1.11.1] 1.1.11.1 Модуль System [0.1.11.2] 1.1.11.2 Модуль Crt [0.1.12] Порядок выполнения работ [0.1.13] ЛАБОРАТОРНАЯ РАБОТА №5. Работа с двумерными массивами [0.1.14] ЛАБОРАТОРНАЯ РАБОТА №6. Программирование с использованием подпрограмм |
PAGE \* MERGEFORMAT 21