- •Структура описания лабораторной работы
- •Выполнение работы
- •Форма отчета
- •Основные сведения
- •Установка и запуск системы
- •Интерфейс системы
- •Меню и команды
- •Пункт File
- •Пункт Edit
- •Пункт Search
- •Пункт Run
- •Пункт Compile
- •Пункт Debug
- •Пункт Options
- •Пункт Window
- •Пункт Help
- •Страница Compiler Options окна свойств проекта
- •Страница Directories окна свойств проекта
- •Страница Preferences окна свойств проекта
- •Файлы проекта
- •Основные приемы работы в СП Borland Pascal
- •Создание новой программы
- •Работа с уже созданной программой
- •Использование средств отладки
- •Пошаговое выполнение программы
- •Просмотр значений переменных
- •Использование точек останова
- •Порядок выполнения работы
- •Контрольные вопросы
- •Основные сведения
- •Оператор присваивания
- •Составной оператор
- •Условный оператор
- •Оператор варианта
- •Ввод данных с клавиатуры
- •Вывод данных на экран
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 3. Программы с циклами
- •Основные сведения
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с возрастающим параметром
- •Оператор цикла с убывающим параметром
- •Оператор прерывания цикла
- •Оператор продолжения цикла
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 4. Использование массивов
- •Основные сведения
- •Описание массива
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 5. Обработка символьных строк
- •Основные сведения
- •Описание строковых переменных
- •Операции над данными типа string :
- •Стандартные функции для обработки строк
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 6. Использование процедур
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 7. Использование функций
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 8. Работа с текстовыми файлами
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 10. Использование данных ссылочного типа
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 11. Создание и использование модулей
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Литература
– 23 –
виде процедур.
6.Ввести таблицу розыгрыша, упорядочить ее по убыванию совокупности полей «выигрыш», «серия» и «номер», вывести упорядоченную таблицу на экран, циклически запрашивать две тройки чисел «выигрыш-серия-номер» и выводить данные о выигрышных билетах, не попадающих во введенный интервал. Ввод, вывод, упорядочение таблицы и вывод данных
обилетах, не попадающих в интервал, оформить в виде процедур.
7.Ввести таблицу розыгрыша, упорядочить ее по убыванию совокупности полей «выигрыш» и «номер», вывести упорядоченную таблицу на экран, циклически запрашивать две пары чисел «выигрыш-номер» и выводить данные о выигрышных билетах, не попадающих во введенный интервал. Ввод, вывод, упорядочение таблицы и вывод данных о билетах, не попадающих в интервал, оформить в виде процедур.
8.Ввести таблицу розыгрыша, упорядочить ее по возрастанию выигрыша, вывести упорядоченную таблицу на экран, циклически запрашивать сумму выигрыша и выдавать все пары «серия-номер», на которые такой выигрыш выпал. Ввод, вывод, упорядочение таблицы и вывод серий и номеров билетов, на которые выпал выигрыш, оформить в виде процедур.
9.Ввести таблицу розыгрыша, упорядочить ее по возрастанию совокупности полей «серия» и «выигрыш», вывести упорядоченную таблицу на экран, циклически запрашивать два значения выигрыша и выдавать данные о выигрышных билетах, попадающих во введенный интервал. Ввод, вывод, упорядочение таблицы и вывод данных о билетах, попадающих в указанный интервал, оформить в виде процедур.
10.Ввести таблицу розыгрыша, упорядочить ее по возрастанию комбинации полей «серия» и «номер», вывести упорядоченную таблицу на экран, циклически запрашивать два значения серии и выводить данные о выигрышных билетах, попадающих в интервал введенных серий. Ввод, вывод, упорядочение таблицы и вывод данных о билетах, попадающих в указанный интервал, оформить в виде процедур.
11.Ввести таблицу розыгрыша, упорядочить ее по возрастанию серии, вывести упорядоченную таблицу на экран, подсчитать выигрыш, приходящийся на следующие отрезки серий: 0...1000, 1000...10000, 10000...30000. Ввод, вывод, упорядочение таблицы и подсчет выигрыша, приходящегося на один диапазон серий, оформить в виде процедур.
Контрольные вопросы
1.Заголовок процедуры.
2.Формальные и фактические параметры.
3.Параметры-значения и параметры-переменные.
4.Вызов процедуры и возврат из процедуры.
5.Передача фактических параметров по ссылке и по значению.
6.Правило установления соответствия формальных и фактических параметров, требования к соответствующим формальным и фактическим параметрам.
7.Глобальные и локальные данные подпрограмм. Области видимости.
8.Рекурсивный вызов подпрограмм.
Лабораторная работа 7. Использование функций
Основные сведения
Описание функции
function имя_функции(параметр1; параметр2;...): тип; тело_функции;
Описание функции располагается непосредственно перед разделом операторов основной программы или вызывающей подпрограммы.
Параметры и тело функции аналогичны параметрам и телу процедуры, но, помимо этого, перед выходом из функции необходимо ее имени присвоить значение того типа, который указан в заголовке функции.
– 24 –
Вызов (обращение к) функции
имя_функции( фактический_параметр1, фактический_параметр2,...)
может осуществляться внутри любого выражения, в котором разрешено использовать данные того типа, который возвращает функция (о соответствии типов параметров см. описание предыдущей работы).
Связь по данным между вызывающей программой и функцией может осуществляться одним из следующих способов:
•через возвращаемое функцией значение;
•через параметры функции;
•через глобальные переменные, описанные в вызывающей программе и доступные внутри функции.
Пример выполнения
По заданным 50-элементным вещественным массивамA, B и C вычислить
min |
( A ) / min |
j |
(B |
j |
) + min |
(C |
) / min |
j |
( A |
j |
+ B |
j |
) |
при min |
( A ) |
< min |
j |
(B |
j |
); |
|
f = |
i |
i |
|
i |
i |
|
|
|
|
i |
i |
|
|
|
|||||||
|
|
min j ( Aj + B j ) + mini (Ci ), |
|
в противном случае. |
|
|
|
|
|
Здесь запись mini означает минимум по всем элементам массива.
program |
PRIMER; |
const |
N=50; |
type |
MAS=array[1..N] of real; |
var |
arA, arB, arC, arBC, arBA : MAS; |
|
rT : real; |
{***** SUMMATR *****}
procedure SUMMATR( var arREZ:MAS; arM1,arM2:MAS );
{
Действие:
Поэлементное суммирование массивов arREZ=arM1+arM2 Параметры входные:
arM1, arM2 – массивы-слагаемые Параметры выходные:
arREZ – массив-результат Замечания: –
}
var I:integer; begin
for I:=1 to N do arREZ[I]:=arM1[I]+arM2[I]
end;{ SUMMATR }
{***** VVOD *****}
procedure VVOD(var arM:MAS);
{
Действие: Ввод массива
Параметры входные: - Параметры выходные:
arM – массив-результат Замечания: –
}
var I:integer; begin
for I:=1 to N do
– 25 –
read(arM[I]) end;{ VVOD }
{***** MIN *****}
function MIN( arM:MAS ): real;
{
Действие:
Нахождение минимального элемента Параметры входные:
arM – массив Параметры выходные: - Возвращает:
значение минимального элемента Замечания: –
}
var I:integer; R:real; begin
R:=arM[1];
for I:=2 to N do
if R>arM[I] then R:=arM[I]; MIN:=R
end;{ MIN }
{***** MAX *****}
function MAX(arM:MAS): real;
{
Действие:
Нахождение максимального элемента Параметры входные:
arM – массив Параметры выходные: - Возвращает:
значение максимального элемента Замечания: –
}
var I:integer; R:real; begin
R:=arM[1];
for I:=2 to N do
if R<arM[I] then R:=arM[I]; MAX:=R
end;{ MAX }
{***** MAIN *****}
begin
writeln('Введите A'); VVOD(arA); writeln('Введите B'); VVOD(arB); writeln('Введите C'); VVOD(arC); SUMMATR(arBC,arB,arC); SUMMATR(arBA,arB,arA);
if MIN(arA) < MAX(arB) then
T := MIN(arB)/MAX(arA) + MAX(arC)/MIN(arBC) else
T := MAX(arBA) + MIN(arC); writeln('T=',T)
– 26 –
end.
Варианты заданий
1.Даны коэффициенты многочленов P(x) и Q(x) пятого порядка и вещественное число a. Вычислить величину P(a+Q(a)*(a+1)). Написать функцию (единственную), вычисляющую как P(x), так и Q(x).
2.Дано вещественное число a. Вычислить:
ln(1+sin a/(a2+5))*ln((sin2(a-1))/(1+a4))-ln(1+sin(a/2)/(3+sin2a))
Для вычисления ln x и sin x использовать степенные ряды:
ln(1+z)= z - z2/2 + z3/3 – z4/4 + ... для |z| < 1, sin z = z - z3/3! + z5/5! – z7/7! + z9/9! – …
Вычисление рядов производить с точностью e=0,0001. Написать функции для вычисления ln x, sin x.
3. Дано вещественное число a. Вычислить: arctg((a2-1)/(a2+1))*arctg((cosa-sin2a)/(a2+4))-arctg(1/(a2+4))
Для вычисления arctg(x) использовать степенной ряд arctg x = x - x3/3 + x5/5 - x7/7 + x9/9 - …
Вычисление ряда производить с точностью e=0,0001. Написать функцию для вычисления arctg x .
4. По вещественным числам e>0 и t вычислить величину
4 1 −cos4 t / 4 + 5 1 −arctan t / 200 9 1 − /(3 + t 2 ) .
Корни вычислить с точностью e , используя ряд Тейлора
(1+x)a=1+ax+(a(a-1)/2!)x2+(a(a-1)(a-2)/3!)x3+... (|x|<=1, a>0).
Написать функцию для вычисления корня. 5. Дано вещественное число a. Вычислить:
arcsin((cos2a-1)/(4+a2))-arcsin(sin(a2-1)/(8a+3))*arcsin((sin a+cos a)/9).
Для вычисления arcsin x использовать степенной ряд
arcsin x = x+x3/(2*3)+3x5/(2*4*5)+(3*5)x7/(2*4*6*7)+… (|x|<1).
Вычисления ряда производить с точностью e=0,0001. Написать функцию для вычисления arcsin x .
6. Дано вещественное число a. Вычислить ecos2a+1 cos(e2a − 4) + ecos( a2 −1)+cos3 (a+1) . Для вычисления функций ex и cos x использовать степенные ряды:
ex= 1 + x + x2/2! + x3/3! + … ,
cos x = 1 - x2/2! + x4/4! - x6/6! + x8/8! - …
Вычисление рядов производить с точностью e=0,0001. Написать функции для вычисле-
ния ex и cos x .
7. Даны координаты (x1,y1), (x2,y2)…(x7, y7) точек p1…p7 замкнутой ломаной. Проверить, имеет ли эта ломаная самопересечения. Если ломаная не имеет самопересечений, выяснить, является ли семиугольник p1...p7 выпуклым. Написать функцию, проверяющую, пересекаются ли два отрезка с указанными координатами, и функцию, вычисляющую площадь треугольника по координатам его сторон.
8.Дано четное число n . Проверить для этого числа гипотезу Гольдбаха. Эта гипотеза заключается в том, что каждое четное число n, большее 2, представляется в виде суммы двух простых чисел. Написать и использовать функцию, проверяющую, является ли число простым.
9.Даны вещественные матрицы A, B, C размером 5x6. Вычислить величину
(||A||+||B||+||C||)/(||A+B+C||+||A-B-C||),
где ||D||= maxj |d1,j| + maxj |d2,j| +…+ maxj |d5,j|.
Программа должна использовать функцию нахождения максимума в строке матрицы и функцию вычисления ||D||.