Лабораторная работа №1
Содержание: Набор и отладка программ №1, №2.
Задание №1: Вычислить корни квадратного уравнения.

Программа:
Var A, B, C, D, x1, x2 : Real;
Begin
WriteLn(‘Введите коэффициенты А, В, С:’);
ReadLn(A, B, C);
D:=B*B –4*A*C;
If D >=0 Then
Begin
x1:= (–B+Sqrt(D))(2*a)
x2 := (B –Sqrt(D))/(2*a)
Wrieln(‘x1=’, x1:8:4, ‘x2=’ , x2:8:4);
End
Else
Writeln(‘Действительных корней нет’);
End.
Задание №2: Простейший вариант игры в случайные бросания.
Программа №2:
Var
x, y : Integer;
Begin
Randomize;
x := Random(2);
Write(‘Введите число 0 или 1’);
ReadLn(y);
If y = x Then WriteLn(‘Вы выиграли’)
Else WriteLn(‘Выиграл компьютер’);
End.
Практическое занятие №2
Тема: Стандартные функции. Арифметические выражения.
Необходимые сведения
Таблица 5 – Стандартные функции
Abs(x) | |x| |
In(x) | Ln x |
Exp(x) |
|
Sin(x) | sin x |
Cos(x) | cos x |
Arctan(x) | arctg x |
Sqrt(x) |
|
Sqr(x) |
|
Trunc(x) | Вычисление целой части числа |
Round(x) | Округление x до ближайшего целого |
Odd(x) | Логическое значение True, если число нечетно и значение False, если x четно |
В TURBO PASCAL определены только три тригонометрические функции: sin x, cos x, arctg x. Для вычисления других функций необходимо использовать преобразования:
tg x= sin x / cos x; ctg x = cos x / sin x;
sec x = 1 / cos x; cosec x = 1 / sin x;




Операцию возведения любого числа а в любую степень b можно реализовать с помощью стандартных функций Exp(x) и Ln(x), используя следующее тождество:
, т. е.
соответствует
.
Варианты заданий:
I. Написать фрагменты программ, реализующих следующие вычисления:
1) 
2) 
3) 
4) 
5) 
II. Написать в общепринятой форме:
1)
;
2)
;
III. Записать с помощью оператора присваивания b переменную d:
1) среднее арифметическое чисел x, y, z;
2) расстояние между точками
и
;
3) площадь треугольника со сторонами a, b, c
Примечание: Использовать формулу для площади треугольника, выраженной через полупериметр
![]()
IY. Вычислить:
1) Trunc (6Round (6.9)
3) Trunc (6Round (6.2)
5) Trunc (-1Round (-1.8)
7) 20 Div 6Mod 6
9) 20 Div 4 Mod 4
11) 2 Div 5 12) 2 Mod 5
13) 3*7 Div 2 Mod 7/3 – Trunc (1.5)
Y. Поменять местами значения целых X и Y, не используя
дополнительные переменные.
Лабораторная работа №2
Тема: Стандартные функции. Арифметические выражения.
Необходимые сведения:
Запуск программы на трансляцию и выполнение – команда Ctrl-F9;
Просмотр результатов расчетов – команда Alt-F5.
Пример задания: Вычислить значение арифметического выражения следующего вида:
![]()
Вариант программы:
Var
A, B, C, D, Y : Real;
Begin
A:=1.5; B:=4.3; C:=10: {ввод данных}
D:=7.1;
Y:=(A*Sqrt(Abs(Sin(A+B*C)))-Exp(-A*C))/Sqrt(Abs(2*B+D));
WriteLn (“Y=’.Y:8:3): {вывод результата}
End.
Варианты заданий:
Разработать программу для вычисления арифметического выражения (таблица 2) и вывода полученного результата. Ввод исходных данных организовать с помощью оператора присваивания.
Таблица 6 – Варианты арифметических выражений
Номер варианта | Выражение | Исходные данные |
1 |
| x, y |
2 |
| c, x, y |
3 |
| b, x, y |
4 |
| x, y, z |
5 |
| x, y, z |
6 |
| x, y, z |
7 |
| x, y |
8 |
| x, y, z |
9 |
| x, y, z |
10 |
| x, y, z |
11 |
| x, y, z |
12 |
| x, y |
13 |
| x, y |
14 |
| x, y |
15 |
| x, z |
16 |
| x, z |
Контрольные вопросы
1. Какие подменю имеет главное меню среды TURBO PASCAL?
2. Как войти (выйти) из главного меню?
3. Какие команды управления маркером имеет текстовый редактор TURBO PASCAL?
4. Какие команды работы с блоками имеет текстовый редактор TURBO PASCAL?
5. Из каких разделов состоит программа на языке TURBO PASCAL?
Практическое занятие №3
Тема: Логические выражения. Условные операторы.
Необходимые сведения
Описания логических переменных. Логические операции NOT, AND, OR. Условные операторы IF…THEN, IF…THEN…ELSE… .
Варианты заданий:
1. Логический тип данных.
1.1 Вычислить значение выражений:
1) Sqr(x) + Sqr(y)=4 при x = 0.3, y = – 1.6;
2) k Mod 7 = k div 5 –1
3) Odd(Trunc(10*p)) при p=0.182
1.2 Записать на Паскале отношение, истинное при выполнении указанного условия и ложное в противном случае:
1) целое k делится на 7;
2) уравнение
не имеет вещественных корней;
3) точка (x,y) лежит вне круга радиуса r с центром в точке (1,0);
1.3 Вычислить значения выражения:
1) Not Odd(N) при N=0;
2) t And (p Mod 3 = 0) при t=True,
3) (x*y<>0) And (y>x) при x = 2, y =1;
4) (x*y <>0) Or (y>x) при x=2, y=1;
1.4 Записать на Паскале выражение, истинное при выполнении указанного условия и ложное в противном случае:
1) 0 < x < 1;
2) t = max(x, y, z);
1.5 Указать порядок выполнения операции при вычислении выражения:
1) A And B Or Not C And D;
2) (x>=0) Or t And Odd(x) Or (y*y<4);
1.6 Объяснить ошибки в записях:
1) 1 And 0; 2) True + False;
3) True < 0; 4) x>0 Or y=4;
5) Not 2 =5;
1.7 Записать на Паскале выражение, истинное при выполнении указанного условия и ложное в противном случае:
1) x принадлежит отрезку [0,2];
2) x лежит вне отрезка [0,2];
3) x принадлежит отрезку [3,4];
4) x лежит вне отрезков [3,4] и [-2,1];
5) каждое из чисел x, y, z больше нуля;
6) хотя бы одно из чисел x, y, z больше нуля;
2. Условный и составной операторы.
2.1 Записать указанное действие:
1) 
2)
;
3)
;
4)
;
5) 
2.2 Какие значение будет иметь переменная z после выполнения операторов:
z:=0;
If x>0 Then If y>0 Then z:=1 Else z:=2
при
a) x=1, y=1 б) x=1, y= – 1 в) x = –1, y=1.
2.3 Написать последовательность операторов для решения задач:
1) 
2) значения переменных А, В, С поменять местами так, чтобы оказалось
.
Лабораторная работа №3
Тема: Логические выражения. Условные операторы.
Необходимые сведения
Команды работы в текстовом редакторе TURBO PASCAL, пошаговая отладка программы – команда F8.
Пример задания: Разработать программу для вычисления выражения вида

Вариант программы:
Var A, B, C : Real;
Begin
WriteLn (‘Введите исходные данные’); ReadLn (a, b);
If A*B<0 Then C:= Ln(Sqr(A*B));
If A*B >0 Then C:= Ln(A*B);
If A*B=0 Then C:= 0 WriteLn(‘C’, C:8:3);
End.
Варианты заданий:
Разработать программу вычисления выражения (таблица 3) и вывода полученного результата на экран. Исходные данные ввести с клавиатуры.
Таблица 7 – Выражения для расчетов
Номер варианта | Выражение | Исходные данные |
1 |
| x, y |
2 |
| x, y |
3 |
| x, y |
4 |
| x, y |
5 |
| i, a |
6 |
| a, b, x |
7 |
| x, y |
8 |
| k, m |
9 |
| k, p |
10 |
| f, g |
11 |
| x, y, z |
12 |
| x, y, z |
13 |
| x, y, z |
14 |
| x, y, z |
15 |
| x, y, z |
16 |
| x, y, z |
Контрольные вопросы
1. Какие команды текстового редактора вы знаете?
2. Какие команды работы с блоком текста вы знаете?
3. Как распечатать на принтере текст программы, не выходя из редактора TURBO PASCAL?
Практическое занятие №4
Тема: Программы циклической структуры.
Необходимые сведения
Синтаксис операторов FOR, WHILE, REPEAT.
Варианты заданий:
1. Вычислить суммы чисел:
1) S= 1+ 2 + 3+…+ 117;
2) S= sin1 + sin 2 +…+ sin25;
3) S= tg24 + tg25 +…+ tg225;
4) S= 1+ 2 + 3+…+ 15;
5) S= ln 0.1 + ln 0.3 +…+ ln1.9
6) S= cos 0.18x + cos 0.20x2 + cos 0.22x3 +…+ cos 0.36x10;
7) S= 1 – 2 + 3 – 4 + …+ (– 1)NN, N > 0 выводится с клавиатуры.
2. Вычислить произведение
1) P= M! = 1* 2* 3*…*M, M вводится с клавиатуры;
2) P= 2* 4* 6*…* 12;
3) P= (2N)!, N > 0 , N вводится с клавиатуры;
4)
, x вводится с клавиатуры;
3. Вычислить выражение:
1)
N >0, M > 0 вводятся с клавиатуры.
2) Q= 1+ x/1! + x2/2!+…+ xN/N!, N>0 вводится с клавиатуры.
4. Вычислить с точностью eps > 0:
1) Q= 1+ 1 + 1/2 - 1/3 + …+ (–1)n/n +…;
2) Q= 1 – 1/2! + 1/4! – …+ (–1)n/(2n)!+…
Примечание.
Считать, что требуемая точность достигнута, если очередное слагаемое по модулю меньше epx, т. е. все последующие слагаемые можно уже не учитывать.
5. Вычислить S – сумму квадратов всех целых чисел, попадающих в интервал (ln x, ex), x >1 вводится с клавиатуры.
Лабораторная работа №4
Тема: Программы циклической структуры.
Необходимые сведения:
Открытие окна просмотра значений переменных (команда CTRL – F7).
Пример: Составить программу для вычисления и вывода на печать таблицы значений функции
y = ax2 + bx + c , при x = 0.1, 0.2, …, 1.2 .
Здесь а = 0.5 , b = –1.1 , c = 0.7 .
Вариант программы
Const A = 0.5; B = –1.0; C = 0.7;
Var X, Y : Real; K : Integer;
Begin
For K:=2 To 12 Do
Begin
X:= 0.1*(K-1); Y:= A*X*X+B*X+C;
WriteLn(‘X=’, X:8:4. ‘Y=’, Y:8:4);
End;
End.
Варианты заданий:
1. Вычислить число сочетаний из n по m по формуле
, где n!= 1*2*3*…*n, целые числа n, m (n>m, n>0, m>0) ввести с клавиатуры.
2. Вычислить значение выражения
, где n ввести с
клавиатуры.
3. Вычислить приближенно значение суммы с точностью до e=0.001:
![]()
См. прим. к практическому занятию №4.
4. Найти наибольшее значение функции
при изменении x от xнач до xкон с шагом h. Исходные данные:
a = 2.14; b= – 4.21; c = 3.25; xнач= –4.5; xкон = –33.5; h= 0.5 .
5. Вычислить приближенно значение бесконечной суммы с точностью до 0.0005

Значение Q > 0 ввести с клавиатуры.
6. Вычислить и вывести на экран таблицу значений функции
, для xнач £ x £ xкон с шагом h.
Исходные данные:
a = –1.14; b= – 4.21; c= 3.25; xнач =4.5; xкон= 35.5; h =0.5.
7. Вычислить значение выражения

число m ввести с клавиатуры.
8. Составить программу вычисления и вывода на экран таблицы сумм
, где x изменяется в пределах a £ x £ b с шагом h= (b – a)/10. Исходные данные a=0.1; b=13; N=12.
9. Вывести на печать таблицу N значений функции
при изменении x от x1 до x2 b и число N ввести с клавиатуры.
10. Составить программу для вычисления и вывода на экран значения
для a £ x £ b, изменяющегося с шагом h= (b – a)/10. Исходные данные: a= –1.05, b = 3.2, N =5.
11. Найти приближенно с точностью до 0.01 минимум функции
на отрезке x1 £ x £ x2. Значения x1, x2, А, В, С ввести как константы.
12. Вычислить бесконечную сумму
с точностью e = 0.0001. (см. прим. к практическому занятию №4).
13. Вычислить значение функции
, для k=1,2,…
14. Пусть ![]()
Найти
. Значения u, v, N ввести с клавиатуры.
15. Вычислить бесконечную сумму
с точностью
e =0.001 . Значение x ввести с клавиатуры.
Примечание: в заданиях на вычисление бесконечных сумм с заданной точностью считать, что требуемая точность e достигнута, если очередное слагаемое оказалось по модулю меньше, чем e.
Контрольные вопросы:
1. Какие команды находятся в разделе RUN главного меню системы TURBO PASCAL.
2. Как записывается и работает оператор цикла FOR?
3. Как записывается и работает оператор цикла WHILLE?
4. Как записывается и работает оператор цикла REPERAT?
5. В чем отличие оператора WHILLE от оператора REPARAT?
6. Какой оператор цикла удобно использовать в случае с заданным количеством повторений?
7. Как программируется цикл с незаданным количеством повторений?
Практическое занятие №5
Тема: Программирование с использованием одномерных массивов.
Необходимые сведения
Правила описания массивов, операции с массивами.
Варианты заданий:
1. Имеются описания:
Type day = (yesterday, today, tomorrow);
vector = Array [1..30] of Real;
Var A: vector;
B: Array [– 2..2] of Integer;
C: Array [‘0’..’9’] of vector;
d: Array [day] of 0..23;
для каждого из массивов указать:
1) сколько в нем элементов;
2) какие значения могут принимать его элементы;
3) как указать первый, последний элементы.
2. Написать фрагмент программы для вычисления выражения.
Пусть описание имеет вид
Const N=21;
Var X : Array [1..N] of Real;
Y : Real;
1) ![]()
2) ![]()
3)
N нечетное;
4) 
5) 
6)
; 7)
.
3. Выполнить следующие задания:
1) Дан массив вещественных чисел x1,x2,…xN. Напечатать сначала все отрицательные, затем все положительные элементы массива.
2) Даны вектора (массивы)
. Вычислить значения выражений:
1. 
2. 
Лабораторная работа №5
Тема: Программирование с использованием одномерных массивов.
Необходимые сведения
Отладка программ с использованием режима F4.
Текущий просмотр значений переменных с помощью команды CTRL-F4.
Пример задания: Составить программу для вычисления значений функции и вывода на печать положительных значений функции с использованием массивов:
при x= 0,0.5, 1.0, 1.5,…2.5
Вариант программы
Const N = 6;
Var
K, L : Integer; X : Rael;
Y : Array[1..N] Of Real;
Begin
For L := 1 To N Do
Begin
X:= 0.5*(I –1); Y[L] =sin(PI * 0.25 X)+ cos(PI*0.25*X);
If Y[L] > 0 Then WriteLn(‘x=’, X:8:4, ‘y=’, Y:8:4)
End;
End.
Варианты заданий:
1. Для значений М=1, 2,…,N вычислить число сочетаний из N по М и занести результаты в массив С=(С1,С2,…,СN), используя
Ci= n!/ ( i!(n – 1)!). Отсортировать методом перестановок по
возрастанию. На печать вывести массив С до сортировки и после
нее. Здесь числа N > 0, M > 0, N > M ввести с клавиатуры.
2. Вычислить значение выражения при М =1,2,3,…, N
.
Значения напечатать и записать в массив В. Массив В отсортировать по убыванию через поиск минимального элемента и напечатать результат. N ввести с клавиатуры.
3. Сформировать S – массив вещественных чисел, отсортировать по возрастанию методом перестановок и напечатать:

число N > 0 ввести с клавиатуры.
4. Вычислить и записать в массив значения функции
при изменении x от xнач до xкон с шагом h. Массив значений отсортировать по убыванию методом перестановок и напечатать.
a =2.14; b= –4.21; c= 3.25;
xнач = –4.5, xкон= –33.5, h= 0.5;
5. Сформировать массив чисел

и отсортировать по возрастанию через поиск максимального
элемента. N ввести с клавиатуры.
6. Сформировать массив значений функции
, для xнач £ x £ xкон с шагом h.
A= – 1.14, B= – 0.21, C= 3.25; xнач = 0.5, xкон =2.5, h= 0.5.
Перед выводом на экран массив отсортировать методом перестановок по возрастанию.
7. Записать в вещественный массив числа
, k= 1,2,…N. Отсортировать
по убыванию через поиск минимального элемента и напечатать.
8. Вычислить значения функции
в точках
, где k=1,2,…,11 , h= (b – a)*0.1 , b =13, N= 12.
Значения отсортировать по возрастанию методом перестановок и
напечатать.
9. Вывести на печать значения функции
,
предварительно сформировав из них массив чисел. Массив
отсортировать по убыванию через поиск максимального
элемента. А= 0.1 , В= –4 , С = 6, x1= 0.5 , x2= 1.5 , h = 0.1
10. Заполнить массив значениями

отсортировать по возрастанию методом перестановок и
напечатать результат.
11. Вывести на печать значение функции y (x1) до и после сортировки по убыванию методом перестановок
.
.
Значения xнач, xкон, N ввести с клавиатуры.
12. Заполнить массив Q значениями
и напечатать, отсортировав по возрастанию через поиск максимального элемента. N ввести с клавиатуры.
13. Вычислить значение функции, записать в массив, отсортировав по убыванию методом перестановок и напечатать:
. x= 1.2, y = 1.1. Значение N ввести с клавиатуры.
14. Пусть a1= u, b1= v, ak=ak-1 +2bk-1, bk = 2ak-1+ bk-1, k= 2,3,4,…,N.
Найти
Занести в массив и отсортировать по возрастанию через поиск максимального элемента. Числа u, v, N ввести с клавиатуры.
15. Сформировать массив чисел
. Значение x ввести с клавиатуры. Число М = 8. Напечатать p, предварительно отсортировав по убыванию методом перестановок.
Контрольные вопросы
1. Какие команды находятся в разделе DEBUG главного меню системы TURBO PASCAL?
2. Может ли массив содержать один элемент? Ни одного?
3. Можно ли во время выполнения программы изменить размер массива?
4. Могут ли числа 1, 1ю41, 1.73, 2 быть элементами некоторого массива?
Практическое занятие №6
Тема: Программирование с использованием двумерных массивов.
Необходимый материал
Правила описания и использования переменных типа массив, типизированных констант типа массив.
Варианты заданий:
Написать фрагменты программ, позволяющие:
1. Найти сумму коэффициентов первой строки матрицы Аi, j, i, j=1,2,…,N.
2. Найти след матрицы 
3. Найти сумму коэффициентов k – 20 столбца матрицы Аi, j, i, j= 1,2,…,N.
4. Вычислить вектор z, являющийся произведением вектора
и матрицы ![]()

5. Найти транспонированную к А матрицу (т. е. поменять местами строки и столбцы).
6. Вычислить максимальный элемент матрицы А.
7. Найти сумму элементов матрицы по второй (неглавной) диагонали.
8. Даны матрицы А и B в размерности N´N. Найти С = АВ.
9. Выписать фрагмент программы для решения задачи: в матрице А поменять местами 1-ю и 2-ю строки, 3-ю и 4-ю строки, … , 19-ю и 20-ю строки. Матрица А имеет размерность 20´20.
10. Написать программу, позволяющую определить, является ли матрица (целая квадратная, 10-го порядка) симметричной.
11. Определить, является ли целая квадратная матрица 9-го порядка магическим квадратом, т. е. такой, в которой суммы элементов во всех строках и столбцах одинаковы.
Лабораторная работа №6
Тема: Программирование с использованием двумерных массивов.
Необходимые сведения
Отладка программы с использованием точек останова (команда CTRL-F8).
Пример: Найти максимальный элемент матрицы размером 3´3:

Вариант программы
Const
N1=3; N2=3;
A : Array[1..N1, 1..N2] Of Real = ((2,1,3), (8,6, –1), (4,4,2));
Var
I, J : Integer; Q : Real;
Begin
Q:=A[1,1];
For I:=1 To N1 Do
For J:=1 To N2 Do
If A[I, J] > Q Then Q:=A[I, J];
WriteLn (‘максимальный элемент=’, Q:8:4)
End.
Варианты заданий
1. Задан двумерный массив (матрица) вещественных чисел. Найти наибольший и наименьший элементы k-й строки, 1£k£N, l-го столбца, 1£k£М, где N – число строк, М – число столбцов. Числа N и М задать константами, массив описать как типизированную константу.
2. Задан двумерный массив вещественных чисел размерности 3´3. Найти номер строки и номер столбца, в которых находится наименьший элемент. Массив описать как типизированную константу.
3. Задан двумерный массив N´N вещественных чисел. Необходимо каждый элемент соответствующей строки разделить на сумму элементов этой строки. Значения элементов массива ввести с клавиатуры, N=5.
4. Задан двумерный массив вещественных чисел. Заменить все отрицательные элементы нулями и подсчитать сумму положительных элементов в каждой строке. Размерность массива и значения элементов массива ввести с клавиатуры.
5. Заданы натуральные N > 0 и последовательность вещественных чисел b1, b2,…,bn. Сформировать массив А по правилу:
. Значения N и последовательность чисел b1,b2,…,bn ввести с клавиатуры.
6. Определить, является ли заданная целая квадратная матрица 10-го порядка ортонормированной, т. е. такой, в которой скалярное произведение каждой пары различный строк равно 0, а скалярное произведение каждой строки на себя равно 1.
7. Задан двумерный массив В размерности 3´5. Получить новый массив с именем С путем удаления из В строки и столбца, в которых содержится максимальный элемент матрицы. Описать массив В как типизированную:

8. Задан двумерный массив А размерности M´N. Дополнить его М+1-й строкой и N+1–M столбцом, в которые записать суммы элементов соответствующих строк или столбцов исходного массива А, В элемент аm+1,n+1 поместите сумму элементов исходного массив. Элементы массива А необходимо ввести с клавиатуры. М=3, Т=3.
9. Задана матрица размерности М´N. Необходимо, не используя другого вспомогательного массива, транспонировать матрицу (переставить местами столбцы строки). Исходные данные ввести с клавиатуры.
10. Заданы два одномерных массива А и В размерности N и М соответственно. Сформировать двумерный массив D размерности M´N по правилу
и обнулить отрицательные элементы D.
11. Задана вещественная квадратная матрица порядка 4. Из этой матрицы выбрать строку, сумму модулей коэффициентов которой наибольшая. Далее в этой строке найти наименьший элемент. Значения коэффициент матрицы ввести с клавиатуры.
12. Задана вещественная матрица размерности М´N. В каждом столбце найти максимальный элемент, затем среди этих чисел найти минимальное. Указать индексы этого элемента.
13. Заданы целые положительные числа BN, M и Р. Определить вектор
, элементы которого вычисляются по правилу 
где 
Исходные данные: N=3, M=4, P=46.
14. Задана вещественная матрица размерности М´N. Построить матрицу В, где элемент bij равен разности суммы модулей коэффициентов столбца и суммы модулей коэффициентов строки содержащих данный элемент. Исходные данные ввести с клавиатуры.
15. Задана вещественная матрица размерности 7´7, все элементы которой различны. Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом.
Контрольные вопросы:
1. Какие вопросы отладчика системы TURBO PASCAL вы знаете?
2. Как установить и удалить точки прерывания в программе?
3. Как вставить новые переменные и выражения в одно просмотра?
4. Как удалить переменные из окна просмотра?
Практическое занятие №7
Тема: Программирование с использованием процедур и функций.
Необходимые сведения
Правила описания и вызова процедур и функций, механизм передачи параметров, понятие локальных и глобальных переменных.
Варианты заданий
1. Описать функцию max(x,y), где x,y – вещественные числа.
2. Вычислить z=(sign x + sign y) sign (x+y), где 
3. По заданному x вычислить
. Примечание:
.
4. Описать функцию «степень» (x, y) от вещественного x и натурального n, вычисляющую (через умножение) величину x и использовать ее для вычисления b =2.7k+(a + 1).
5. Даны три натуральных числа. Определить их наибольший общий делитель.
6. Type NAT = 1..maxint;
Var m, n : NAT;
Function NOD(m, n:NAT) : NAT;
Begin
Whille m < > n Do
If m > n Then m:= m – n Else n:=n – m;
NOD:=m
End;
1) Определить, что будет выдано на печать
m:=8; n:=6; write(NOD(m, n),m, n);
2) Объясните, почему при вычислении NOD(m, n) не меняется значение переменных m и n, хотя в теле функции оба эти параметра изменяют свое значение.
7. Описать функцию S= 1 + 2 + … + N, N – формальный параметр.
8. Описать процедуру S = 1 + 2 + …+ N, S, N – формальные параметры.
9. Описать процедуру minmax(x, y), которая присваивает параметру x большее из вещественных чисел x и y, а параметру y – меньшее.
10. Использовать описанную в п.9 процедуру minmax для перераспределения значений вещественных переменных a, b, c так, чтобы стало a ³ b ³ c.
11. Перечислить локальные (в том числе и формальные) и глобальные имена, используемые в примере:
Procedure P(x: vec; var y : Integer);
Const z = ‘*’;
Var c : INDEX;
Begin e:= 0;
For c:= a To b Do
If x[c] > z Then y:=y+1
End;
Лабораторная работа №7
Тема: Программирование с использованием процедур и функций.
Необходимые сведения
Пошаговая отладка программ (команды F7 и F8).
Пример: Написать программу для вычисления и вывода на экран биномиальных коэффициентов по формулам
.
Вариант программы:
Var
Rab : Integer;
Procedure Sochet(K, L : Longint; Var Rez : Longint);
Var A, B, C : Longint;
Function fac(M : Longint) : Longint;
Begin If M=0 Then fac:=1 Else fac:=M*fac(M-1) End;
Begin A:=fac(K); B:=fac(L); C:+fac(K – L);
Rez:=Trunc(A/(B*C))
End;
(Головная программа. Раздел операторов)
Begin
WriteLn (‘Введите числа М < N’); ReadLn (M, N);
If M >=N then
Begin
WriteLn (‘M=’,M’>, N, ‘N=N!’); halt(0)
End
Else
Begin
Sochet(N, M,Rab); WriteLn (‘C=’, Rab);
End;
End.
Варианты заданий
1. Написать подпрограмму, которая выводит на печать элементы одномерного массива в порядке возрастания их значений. В головной программе вызвать эту подпрограмму для разных массивов.
2. Написать подпрограмму вычисления матрицы B = A3, где А – матрица размерности N´ N.
3. Написать подпрограмму вычисления суммы
с точностью до 0.001, в качестве параметра выбрать x.
4. Написать подпрограмму, вычисляющую номера строк целочисленной матрицы размером N´ N, все элементы которых делятся на 3 без остатка.
5. Вычислить значения функции
с заданной точностью e=0.001, в качестве параметра задать x.
6. Составить подпрограмму вычисления суммы
, при a £ x £ b с шагом h= (b – a)*0.1. Значения a, b, N передать в качестве параметров.
7. Составить подпрограмму вычисления выражения:
, где ak= 0.1 * k +0.05, k=0.11,…,n. Значения N и x передать в качестве параметров.
8. Составить программу вычисления
с точностью до 0.001, где x передать в качестве параметра.
9. Даны вещественные числа
. Написать подпрограмму вычисления следующего выражения:
, где N, x и массивы a и b передать в качестве параметров.
10. Даны массивы
. Определить функцию 
11. Написать подпрограмму, которая сортирует одномерный массив в порядке убывания. В основной программе вызвать эту подпрограмму для сортировки двух разных массивов.
12. Составить программу:
, где N и x передать параметрами.
13. Вычислить значения функции:
с точность eps= 0.002, значение X передать параметром.
14. Написать подпрограмму поиска максимального и минимального элементов одномерного массива. В основной программе вызвать этой программу для двух разных массивов.
15. Написать подпрограмму печати значений функции
, при x изменяющемся от 0,1 до 2,4 с шагом 0,05 по 5 значений в строке.
Практическое занятие №8
Тема: Работа с экраном в текстовом режиме.
Необходимый материал:
Процедуры и функции модуля Crt:
1. TextMode (Mode : Word) – процедура, очищает экран, устанавливает текстовый режим, соответствующий параметру «mode».
Таблица 8
Наименование константы | Значение константы | Количество строк | Количество символов в строке | Вид вывода |
BW40 | 0 | 25 | 40 | Черно-белый |
CO40 | 1 | 25 | 40 | Цветной |
BW80 | 2 | 25 | 80 | Черно-белый |
CO80 | 3 | 25 | 80 | Цветной |
Mono | 7 | 25 | 80 | Черно-белый |
Пример: TextMode (CO80); - Активизация цветного текстового режима с экраном в 25 строк по 80 символов в строке.
По умолчанию устанавливает режим Mode = 2 (25 строк по 80 символов в строке):
(1.1)
(1.80)
(25.1) (26.80)
2. TextBackGround (Color : Byte) – процедура. Устанавливает цвет фона. Здесь Color – выражение целого типа в диапазоне от 0 до 7.
3. TextColor (Color : Byte) – процедура. Устанавливает цвет выводимых символов. Здесь Color – выражение целого типа в диапазоне от 0 до 15.
4. Window (X1, Y1, X2, Y2 : Byte) – процедура. Определяет новое текстовое окно. Окно – область экрана, выполняющая те же функции, что и полный экран.
5. ClrScr – процедура. Очищает активное окно и устанавливает курсов в левый верхний угол.
6. ClrEol – процедура. Очищает строку активного окна от текущей позиции курсора до конца строки.
7. CoToXY(X, Y : Byte) – процедура. Устанавливает курсов в позицию с координатами X, Y.
8. WhereX : Integer – функция. Возвращает X-ю координату текущей позиции маркера.
9. WhereY : Integer – функция. Возвращает Y-ю координату позиции маркер.
10. KeyPressed : Boolean – функция. Возвращает TRUE? если была нажата любая клавиша клавиатуры и возвращает FALSE иначе.
11. ReadKey : Char – функция. Считывает код символа нажатой клавиши. Ниже дан пример использования функции для клавиши с кодом, хранящимся в одном байте (например, цифровые клавиши, клавиши алфавита):
Var Ch : Char;
Begin
Writeln(‘Переключите клавиатуру на латинский алфавит’);
Writeln(‘Нажмите клавишу <G>’); Ch:= ReadKey;
Writeln(‘Вы нажали клавишу :’, Ch, ‘ ее код:’, Ord(Ch));
Writeln(‘Переключите клавиатуру на русский алфавит’);
Writeln(‘Нажмите ту же клавишу’);
Writeln(‘Вы нажали клавишу : ’ , CH, ‘ ее код: ’ , Ord(Ch));
End.
Пример использования функции для клавиши с кодом, хранящимся в двух байтах (клавиши, home>, <end>, функциональные клавиши <F1>, <F2> и др.);
Var Ch : Char;
Begin
Ch:=ReadKey:
If Ch:= #0 Then Begin Ch:= ReadKey;
If CH= #79 Then Write(‘Нажата клавиша <End>’);
End.
12. Delay(Time : Word) – процедура. Вызывает задержку выполнения программы на time миллисекунд (0.001 сек).
13. Sound(Hz : Word) – процедура. Включает внутренний звуковой генератор с частотой сигнала Hz Герц. Звук отключается процедурой NoSound.
14. NoSound – процедура. Отключает звуковой генератор.
Лабораторная работа №8
Тема: Работа с экраном в текстовом режиме.
Пример: Реализовать простое меню из трех вариантов выбора.
Программа:
User Crt:
Type Str20 = String[20];
Menu = Array [1..3] Of Str[20];
Const MN : Menu=(‘ режим 1 ‘,
‘ режим 2 ‘,
‘ режим 3 ‘);
Var ch : Char: i, k : Byte;
Procedure Mysound(Hz : Integer: Time : Integer: Time : Integer);
Begin Sound(Hz); Delay(Time); Nosound End;
Function Readchar : Char;
Var c : Char;
Begin
c:= ReadKey: If c = #0 Then c:= ReadKey; Readchar:= c
End;
Function Case_K(ch : Char; k : Byte) : Byte;
Begin
Case ch Of
#72 : If k>1 Then k:= k – 1 Else k:= 3; {< >}
#80 : If k<3 Then k:= k + 1 Else k:= 1; {< ¯ >}
End;
Case_K:=k;
End;
Procedure ShowString(k : Byte; s : Str20; gr, cl : Byte);
Begin
TextBackGround(gr); TextColor(cl); GotoXY(1 k + 2);
Write(s);
End;
Begin
Clrscr; Window(31 11, 50, 16); { Инициализация окна }
TextBackGround(1) { Задание цвета фона }
TextColor(15); { Задание цвета символов }
k:=1; CoToXY(3.2); Write(‘Выберите режим: ‘);
Repeat
For i:=1 To 3 Do { Рисование строк меню }
ShowString(i, mm[i], i+ 1.i + 9);
ShowString(i, mm[i], i + 1.i + 9); { Рисование активной строки }
Mysound(1; { Звуковой сигнал }
Ch:= ReadChar; { Считывание символа }
k:= Case_k(ch, k);
Until (Ch=#13) Or (Ch=#32);
Window(1,1,80,25); Clrscr; Write ( ‘Выбран режим –‘, K:1);
End.
Варианты заданий:
Разработать программу вывода на экран графика функции с помощью различных текстовых символов из заданного набора. Выбор символов реализовать с помощью меню.
варианты функций:
1)
2) ![]()
3)
4) ![]()
5)
6) 
7)
8) ![]()
9)
10) 
11)
12) 
13)
14) ![]()
15)
16)
.
где x принадлежит интервалу ( – 3.14, 3,14 ).
Контрольные вопросы
1. Какие режимы для вывода на экран текстовой информации Вы знаете?
2. Какие процедуры и функции для работы в текстовом режиме Вы знаете?
3. Какие процедуры задают цвет выводимых на экран символов и цвет фона?
4. Какая процедура позволяет устанавливать курсор в заданное место экрана?
5. Какие процедуры управления звуковым генератором Вы знаете?
Практическое занятие №9
Тема: Работа с экраном в графическом режиме.
Необходимый материал:
Основные процедуры и функции модуля Graph.
I. Информационные процедуры и процедуры установки режимов работы
1. IniGraph( Var GraphDriver : Integer;
Var GraphMode : Integer;
PathToDriver : String);
Процедура инициирует графический режим работы монитора.
2. CloseGraph: - процедура, завершающая работу в графическом режиме.
3. GraphResult : Integer: - функция, позволяющая определить код ошибки при инициализации графического режима.
4. GraphErrorMsg(GraphResult : Integer) : String: - функция, которая выдает строку текста сообщения, поясняющего причину ошибки в инициализации графического режима.
5. SetGraphMode(Md : Integer): процедура, устанавливающая указанный в переменной Md графический режим.
6. SetGraphMode : Integer : - функция, с помощью которой можно получить значение установленного графического режима.
7. GetMaxX : Integer; - функция, возвращающая максимальное значение координаты экрана X.
8. GetMaxY : Integer; - функция, возвращающая максимальное значение координаты экрана Y.
9. GetX : Integer; - функция, выдающая текущее значение X.
10. GetY : Integer; - функция, выдающая текущее значение Y.
11. MoveTo(X, Y : Integer); - процедура, задающая новые текущие координаты X и Y.
II. Процедуры для работы с геометрическими объектами
12. PutPixel(X, Y : Integer; Pixel : Word); - процедура, высвечивающая на экране цветом с номером Pixel точку с координатами X Y.
13. LineTo(X, Y : Integer); - процедура, проводящая линию из точки с текущими координатами в точку с координатами X, Y текущим цветом.
14. LineDel(Dx, Dy : Integer); - процедура, проводящая линию из точки с текущими координатами в точку с приращением координат от текущих на Dx и Dy установленным цветом.
15. Line(X1, Y1, X2, Y2 : Integer); - процедура, проводящая линию из точки с координатами X1,Y1 в точку с координатами X2,Y2 текущим цветом.
16. Rectanle(X1,Y1,X2,Y2 : Integer); - процедура, рисующая прямоугольник с координатами диагонали (X1,Y1) (X2,Y2).
17. Bar(X1,Y1,X2,Y2 : Integer); - процедура, рисующая закрашенный прямоугольник с координатами диагонали (X1,Y1) (X2,Y2).
18. Arc(X, Y : Integer Ang1, Ang2, R: Word); - процедура, рисующая дугу с центром в точке (X, Y) радиуса R, начальным углом Ang1 и конечным углом Ang2.
19. Circle(X, Y : Integer: Radius : Word); - процедура, рисующая окружность с центром в точке (X, Y) радиуса R.
20. Ellipse(XY : Integer; Ang1 Ang2: Word; Xr, Yr : Word); - процедура, рисующая дугу эллипса с центром в точке (X, Y) с полуосями Xr и Yr, начальным углом Ang1 и конечным углом Ang2.
21. PieSlice(X, Y : Integer; Angle1, Angle2, R : Word); - процедура, рисующая закрашенный сектор круга с центром в точке (X, Y), радиусом R, начальным углом Ang1 и конечным углом Ang2.
22. FillEllipse(X, Y : Integer; Xr, Yr : Word); - процедура, рисующая закрашенный эллипс с полуосями Xr и Yr центром в точке (X, Y).
23. Sector(X, Y : Integer; Ang1, Ang2, Xr, Yr : Word); - процедура, рисующая закрашенный сектор эллипса с центром в точке (X, Y), полуосями Xr, Yr начальным и конечными углами Ang1 и Ang2.
В указанных выше процедурах углы измеряются в градусах и отсчитываются против часовой стрелки от оси абсцисс.
24. SetLineStyle(LineStyle : Word; Pattern : Word; Thick : Word); - процедура, которая задает тип линии рисования.
Возможные значения параметра LineStyle: 0 – сплошная, 1 – точечная, 2 – прерывистая, штрихпунктирная, 3 – прерывистая штриховая, 4 – определяется пользователем.
Параметр Pattern задает тип линии при LineStyle = 4. Этот параметр игнорируется, если LineStyle <4.
Параметр Thick задает толщину рисуемых линий: 1 – нормальная толщина, 3 – утроенная толщина.
III. Процедуры задания цвета:
25. SetColor(Color : Word); - процедура, задающая цвет рисуемого геометрического объекта. Параметр Color принимает значения в интервале 0..15.
26. GetColor: Word; - процедура, дающая значение текущего цвета рисунка.
27. SetBkColor(Color : Word); - процедура, задающая цвет фона.
28. GetBkColor(Color : Word); - процедура, определяющая цвет фона.
IY. Процедуры закрашивания геометрических фигур
29. SetFillStyle(Pattern : Word; Color : Word); - процедура, устанавливающая образец закраски фигуры. Параметр Pattern принимает значения в интервале 0..11.
30. FloodFill(X, Y : Integer; Border): - процедура, закрашивающая замкнутую область, внутри которой лежит точка (X, Y). Border – параметр, определяющий цвет границы области.
Y. Процедура работы с текстом
31. OutText(TextString : String); - процедура вывода текста на экран, начиная с текущей позиции.
32. OutTextXY(X, Y : Integer; TextString : String); - процедура вывода текста на экран, начиная с позиции (X, Y).
33. SetUserCharSize(MX, DivX, MY, DivY : Word); - процедура, которая задает размеры символов шрифта.
34. SetTextStyle(Font, Direction, CharSize : Word); - процедура, с помощью которой устанавливается тип выводимого текста. Параметр Font имеет следующие значения: 1 – утроенный шрифт, 2 – маленький шрифт, 3 – прямой шрифт, 4 – готический шрифт. Параметр Direction имеет следующие значения 0 – вывод текста слева направо, 1 – снизу вверх. Параметр CharSize принимает значения в интервале 0..30.
Лабораторная работа №9
Тема: Работа с экраном в графическом режиме.
Пример: Построить спирали с начальной точкой (X0 Y0), внешним радиусом R, N витками и начальными направлениями, образующими углы alf и – alf с осью абсцисс.
Программа:
User Graph;
Const n=30; alf=pi*0.25; deltaT=pi/22.5;
Var
t, r : Real;
i, j, k, l, m, gd, gm, xc, yc, x, y : Integer;
Procedure Spi(xc, yc, N : Integer; deltaT, Alf : Real);
Begin
MoveTo(xc, yc): t:=Alf;
For i:=1 To N Do
Begin
For j:=1 To 90 Do
Begin
t:= t+ deltaT; r:=0.75*t;
x:=Round(r*cos(t)+xc);
y:=Round(r*sin(t)+yc);
LineTo(x, y);
End;
End;
Circle(xc, yc, Round(r));
End;
Begin { Головная программа }
gd:=Detect;
InitGraph(gd, gm, ‘l:\tp6\bgi’);
If GraphResult < > 0 Then
Begin
Write(‘Ошибка установки граф. режима:’
‘GraphErrorMsg(GraphResult));
End;
xc:=GetMaxX div 2; yc:=GetMaxY div 2;
Spi(xc, yc, N, deltaT, alf);
Spi(xc, yc, N, – deltaT, – alf);
Readln;
CljseGraph;
End.
Варианты заданий:
Написать программу вывода на экран графика функции y= y(x) используя различные типы линии. В заданиях 1, 4, 7, 10, 13, 16 – сплошная линия; в заданиях 2, 5, 8, 11, 14 – прерывистая, точечная; в заданиях 3, 6, 9, 12, 16 – прерывистая, штриховая. Предварительно необходимо нарисовать оси координат.
Варианты функций:
1)
2) ![]()
3)
4) ![]()
5)
6) 
7)
8) ![]()
9)
10) ![]()
11)
12) 
13)
14) ![]()
15)
16)
,
где x принадлежит интервалу ( – 3,14 , 3,14).
Контрольные вопросы
1. Какая процедура инициирует графический режим?
2. Какие процедуры задают цвет выводимых на экран символов и цвет фона?
3. Какая процедура позволяет устанавливать курсор в заданное место экрана?
4. Перечислите процедуры рисования отрезков прямых и объясните смысл используемых параметров?
5. Каким образом задать тип рисуемой линии?
6. Какие процедуры рисования геометрических фигур Вы знаете?
7. Объясните процедуры вывода текста на экран и объясните смысл входящих в них параметров.
Практическое занятие №10
Тема: Программирование с использованием записей.
Необходимые ведения: Описание записей, оператор присоединения.
Варианты заданий:
1. Описать комбинированный тип для представления следующего понятия:
1) дата (число, месяц, год);
2) семинар (предмет, преподаватель, номер группы, день недели, часы занятий, аудитория);
2. Ответить на следующие вопросы:
1) Верно ли, что все поля записи должны быть разных типов?
2) Почему при описании записи ее поля могут перечисляться в любом порядке?
3) Верно ли, что названия полей записи могут совпадать с именами переменных, констант и других объектов программы, но не могут совпадать с названиями полей записей?
3. Type Address = Record
City, Street : String[40];
Home, Floor : 1..999
End;
Var Ad1, Ad2 : Address;
Присвоить переменной Ad1 значение «Новосибирск, Красный проспект, ». Переменной Ad2 присвоить то же значение, заменив в нем номер дома на 7 и номер квартиры на 21.
4. Type Decart = Record X, Y : Real End;
Polar = Record R, Fi : Real End;
Var D : Decart; P : Polar;
Описать процедуры Dc_Pl(D, P), преобразующую координаты точки на плоскости из декартовых D в полярные P и Pl_Dc(P, D), выполняющую обратное преобразование.
5. Type
Time = Record Hour : 0..23; Min, Sec : 0..59 End;
Описать
а) логическую функцию Early(T1 T2) для проверки, предшествует ли время Т1 времени Т2 (в пределах суток).
б) процедуру Interval(D, T1,T2), которая вычисляет время D, прошедшее от времени Т1 до времени Т2 : d = Т2 – T1 (считать, что Т2 > Т1).
6. Type Citizen = Record
Sename, City : String;
Address : Record Street : String;
Home, Floor : 1..99 End;
End;
List = Array[1..15] of Citizen;
Описать процедуру Ирония_Судьбы(С), которая печатает фамилии двух (любых) жителей из списка С, живущих в разных городах по одинаковому адресу.
Лабораторная работа №10
Тема: Программирование с использованием записей.
Необходимые сведения:
Режимы работы отладчика, отметка точек останова программы и их удаление (Ctrl – F8).
Пример. Составить программу для решения следующей задачи. Пусть дана ведомость абитуриентов, сдавших вступительные экзамены в Институт (приведена часть данных):
Ф. И.О. Оценки
1.
2.
3.
Необходимо определить количество абитуриентов, сдавших все экзамены на “отлично” и их список вывести на экран.
Вариант программы
Const M = 3;
Type Abitype = Record
Fio : String;
Marks : Array[1..M] Of Byte;
End;
Var List : Abitype; K, L, I, J, B : Integer;
Begin K: =0; Readln(L);
For I:=1 To L Do
Begin
Read(List. Fio);
For J:= 1 To M Do Read(List. Marks[J]);
Readln;
End;
For I:= 1 To L Do
Begin
B:= 0;
For J:= 1 To Do
If List. Marks[J]= 5 Then B:= B+1;
If B = M Then Writeln(Fio);
End;
End.
Варианты заданий
Дан список студентов первого курса, в котором содержатся следующие данные: ФИО, номер групп, оценки по результатам зимней экзаменационной сессии (информатика, высшая математика, физика), Написать программу, которая вводит эту информацию и печатает следующие данные:
1. Количество студентов, сдавших экзамены со средним алло не ниже 4 и их список.
2. Список студентов, сдавших все экзамены на «отлично».
3. Номера групп, в которых средний балл – наибольший, и название соответствующих экзаменов.
4. Количество студентов, сдавших экзамены с оценкой не ниже 4 по информатике и список этих студентов.
5. Фамилии ( в алфавитном порядке) студентов, имеющих задолженность хотя бы по одной дисциплине.
6. «Качество» успеваемости, т. е. процент студентов ( и их список), сдавших все экзамены на «хорошо» и «отлично».
7. Название предмета, который был сдан лучше всего, и список остальных предметов в порядке убывания средних экзаменационных оценок.
8. Номера группы и средний балл в порядке убывания средней успеваемости их студентов.
Контрольные вопросы:
1. Как описываются переменные типа «запись»?
2. В каких случаях целесообразно использовать переменные типа «запись»?
3. Каково назначение оператора With?
4. В чем отличие записей от массивов?
Практическое занятие №11
Тема: Программирование с использованием файлов.
Необходимые сведения
Список общих функций и процедур для работы с файлами:
1. Assign(Var F : File; Name : String) – оператор назначения;
2. Reset(Var F : File) – оператор открытия уже существующего файла;
3. Rewrite(Var F : File) – оператор создания нового файла. Если файл с таким именем уже существовал, то он будет стерт.
4. Read(var F : File; X1, X2, …, Xn) – чтение данных из файла;
5. Write(Var F: File; X1, X2, …, Xn) – запись данных в файл;
6. Close(Var F : File) – завершение раоты с фалом F (закрытие файла F);
7. Erase(Var F: File) – уничтожение файла.
8. Rename(Var F : File; Newname : String) – переименование файла F.
9. Seek(Var F : File; N : Longint) – поиск элемента с номером N в файле F и установка маркера в эту позицию.
10. Filesize(Var F : File): Longint – определение количества записей (числа элементов) в файле F.
11. Filepos(Var F : File) : Integer – определение текущего положения указателя файла.
Для работы с текстовыми файлами наряду с перечисленными выше (кроме подпрограмм Seek, Filesize, Filepos) используются следующие:
1. Eoln(Var F : Text) : Boolean –функция, принимает значение True, если маркер достиг конца строки ( при чтении данных из текстового файла) и значении False в противном случае.
2. Append(Var F : Text) – открытие уже существующего файла для добавления данных в конец файла.
3. Writeln(Var F : Text) – завершение текущей строки текстового файла F при его записи.
4. Readln(Var F : Text) – переход к началу следующей строк файла при его чтении.
5. Writeln(Var F : Text, X1 X2, …, Xn) – запись в файл F данных X1 X2, … Xn с завершением текущей строки.
6. Readln(Var F : Text, X1, X2, …, Xn) – чтение N символов файла F с переходом к новой строке.
Варианты заданий
I. Пусть файл F содержит два элемента «4» и «2». Определить, какое значение будет иметь переменная Y после выполнения операторов:
а) Reset(F); Read(F, Y);
If Not Eof)F0 Then Read(F, Y);
If Not Eof(F) Then Read(F, Y);
б) Reset(F); Y:=0; While Not Eof(F) Do Begin
Read(F, X); Y:=Y+ X End;
в) Reset(F); Y:=1; Repeat
Read(F, X); Y:= Y * X;
Until Eof(F);
II. В файле FF записано N вещественных чисел. Написать функцию Nmb(FF), которая должна относительно записанных в файле FF чисел определить:
а) количество положительных чисел,
б) количество отрицательных чисел,
в) сумму всех чисел,
г) сумму положительных чисел,
д) сумму отрицательных чисел.
III. Type Time = Record
hour : 0..23; {Часы}
Min, Sec : 0..59; {Минуты, Секунды}
End;
FileofTime = File Of Time;
Var F1, F2 : Fo;eofTime;
Описать логическую функцию EQ(F1, F2), проверяющую на равенство файлы F1 и F2 типа FileofTime.
IY. Имеется внешний файл First типа Course, содержащий сведения
о студентах первого курса:
Type Exams = (Mathematics, Informatics, Physics);
Student = Record
Fio : String[40]; Group : 41..46;
Marrs : Array[Exams] Of 2..5;
End;
Course = File of Student;
Var First : Course;
Написать программу, которая переписывает в файл Second сведения о студентах:
а) успешно сдавших все экзамены,
б) имеющих задолженность хотя бы по одному предмету,
в) сдавших экзамены на «хорошо» и «отлично»,
г) сдавших экзамены только на «отлично»,
д) сдавших экзамены со средним баллом больше 4.5,
е) имеющих задолженность по всем предметам.
Лабораторная работа №11
Тема: Программирование с использованием файлов.
Необходимые сведения
Процедуры и функции работы с файлами.
Пример. Работа с типизированным файлом на примере телефонного справочника.
Вариант программы
User Crt; Const M = 3;
Type Str10 = String[10];
Person = Record
Fio, Phone : Str10 End;
Var Bookfile : File of Person;
Work : Person : i : Byte;
Procedure Add_ Rec(ab : Person);
Begin
Writeln(‘Создаем справочник из ‘.M.’ записей.’);
With ab Do Begin
Write(‘ Наберите фамилию абонента:’); Readln(fio);
Write(‘ Наберите номер телефона:’); Readln(Phone);
End;
Write(Bookfile, ab);
End;
Procedure Output_Rec(ab : Person; k : Byte);
Begin
Seek (Bookfile, k); Read(Bookfile, ab);
With ab Do
Writeln(‘ФИО: ‘ , fio,’ Тел. : ‘ , phone);
End;
Begin { Головная программа }
Clrscr; Assign(Bookfile ‘Phone. dat’);
Rewrite(Bookfile): Write(‘Создаем телефонн. справочник ‘);
For i: = 1 To M Do Add_Rec(Work);
Write(‘ Набор данных завершен. Записаны данные о ‘ );
Writeln(Filesize(Bookfile), ‘ абонентах ‘);
i:=0; Seek(Bookfile, 0);
While Not Eof(Bookfile) Do Begin
Output_Rec(Work, i); i:= i+1;
End; Readln; Closse(BookFile);
End.
Варианты заданий
Используя текст примера в качестве основы, написать программу, которая:
1) выводит на экран список абонентов в алфавитном порядке,
2) выводит на экран список абонентов, в номерах телефонов которых заданы первые две цифры,
3) выводит на экран список абонентов по возрастанию телефонных номеров,
4) выводит на экран список абонентов, в номерах телефонов которых сумму цифр – нечетное число,
5) позволяет заменять информацию об абонентах,
6) позволяет находить номера тех абонентов, фамилии которых начинаются на заданную букву,
7) выводит на экран список абонентов, в номерах телефонов которых заданы последние две цифры,
8) выводит на экран список абонентов, в номерах телефонов которых сумма цифр – четное число,
9) список абонентов, телефонные номера которых являются «счастливыми», т. е. сумма первых трех цифр равна сумме последних трех цифр.
Контрольные вопросы:
1. С помощью какого оператора устанавливается соответствие между внешним именем файла и файловой переменной?
2. Каким образом создать файл?
3. Как подготовить уже существующий файл к считыванию данных?
4. Верно ли, что элементы файла должны быть одного типа и что файл отличается от массива только тем, что размер (количество элементов) файла произволен, а размер массива фиксирован?
5. Как записать данные в файл? Как считать данные из файла?
6. Как определить размер файла?
7. С помощью какой функции можно определить, есть ли еще в файле данные или уже достигнута метка конца файла?
Список рекомендуемой литературы:
1. , , / Введение в язык Паскаль. – М. : Наука, 1988. – 320 с.
2. Инструментальные средства персональных ЭВМ. В 10 кн. Кн.4. Программирование в среде Турбо-Паскаль: Практ. пособие / , , и др.; По ред. .Г. Трусова. – М.: Высш. шк., 1993. –142 с.
3. //Сборник упражнений по языку Паскаль; Учеб. пособие для вузов. – М.: Наука. Гл. ред. физ.-мат. лит., 1989 . – 160 с.
4. Программирование в среде Turbo Pascal 6.0: Справ. пособие/ , , . – Мн.: Высш. шк., 1992. – 158 с.
5. Программирование на языке Паскаль. Практическое руководство. – М.: Мир, 1987. – 232 с.
6. Зуев программирования Turbo Pascal.// М.: Радио и связь, 1991. – 288 с.

























