 
        
        2606 (Turbo Pascal)
.pdf 
i = i + 1
нет да
i > 9
k:= 1
Min[k] = Elem[1,k]
i:= 2
| нет | да | 
Min[k] > Elem[i, k]
Min[k] = Elem[i, k]
i = i + 1
нет да i > 9
| 
 | 
 | k = k + 1 | 
 | 
 | 
| нет | 
 | 
 | да | |
| 
 | k >9 | |||
| 
 | 
 | 
 | 
 | |
i = 1
k = 1
Elem[i, k]
k = k + 1
| нет | k >9 | да | 
Max[i]
i=i+1
11
 
нет да
i > 9
| 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 
 | k = 1 | 
 | 
 | |
| 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 
 | Min[k] | 
 | 
 | |
| 
 | 
 | 
 | 
 | ||
| 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 
 | k = k + 1 | 
 | 
 | |
| 
 | 
 | 
 | 
 | 
 | 
 | 
| нет | 
 | 
 | да | 
 | |
| k >9 | 
 | ||||
| 
 | 
 | 
 | 
 | ||
| 
 | 
 | 
 | 
 | 
 | 
 | 
конец
4. Текст программы:
Program Matr;
Var Elem:array[1..9,1..9] of real; Min,Max:array[1..9] of real; i,k,col:integer;
s:real;
LM:text; {file of string[20]} Begin
assign(LM,'D:\matr.txt'); {. Процедура assign устанавливает соответствие между обозначением файла (логическим файлом), используемым в программе, и названием реального физического файла (или устройством).}
rewrite (LM);{ Оператором rewrite открывается логический файл для записи в него. После окончания работы файл закрывается оператором close.}
for i:=1 to 9 do for k:=1 to 9 do
Elem[i,k]:=i*sin(k); for i:=1 to 9 do
begin Max[i]:=Elem[i,1]; for k:=2 to 9 do
12
 
if Max[i]<Elem[i,k] then Max[i]:=Elem[i,k]; end;
for i:=1 to 9 do begin
Min[k]:=Elem[1,k]; for k:=1 to 9 do
if Min[k]>Elem[i,k] then Min[k]:=Elem[i,k]; end;
for i:=1 to 9 do
begin
for k:=1 to 9 do
write (LM,Elem[i,k]:5:1); writeln (LM,Max[i]:9:1);
end; writeln (LM); for k:=1 to 9 do
write (LM,Min[k]:5:1); writeln (LM); Close(LM);
end.
5. Результат:
Открываем файл Matr.txt, находящийся в корневом каталоге диска D.
| 0.8 | 0.9 | 0.1 | -0.8 | -1.0 | -0.3 | 0.7 | 1.0 | 0.4 | 1.0 | 
| 1.7 | 1.8 | 0.3 | -1.5 | -1.9 | -0.6 | 1.3 | 2.0 | 0.8 | 2.0 | 
| 2.5 | 2.7 | 0.4 | -2.3 | -2.9 | -0.8 | 2.0 | 3.0 | 1.2 | 3.0 | 
| 3.4 | 3.6 | 0.6 | -3.0 | -3.8 | -1.1 | 2.6 | 4.0 | 1.6 | 4.0 | 
| 4.2 | 4.5 | 0.7 | -3.8 | -4.8 | -1.4 | 3.3 | 4.9 | 2.1 | 5.0 | 
| 5.0 | 5.5 | 0.8 | -4.5 | -5.8 | -1.7 | 3.9 | 5.9 | 2.5 | 5.9 | 
| 5.9 | 6.4 | 1.0 | -5.3 | -6.7 | -2.0 | 4.6 | 6.9 | 2.9 | 6.9 | 
| 6.7 | 7.3 | 1.1 | -6.1 | -7.7 | -2.2 | 5.3 | 7.9 | 3.3 | 7.9 | 
| 7.6 | 8.2 | 1.3 | -6.8 | -8.6 | -2.5 | 5.9 | 8.9 | 3.7 | 8.9 | 
| 0.8 | 0.9 | 0.1 | -6.8- -8.6 | -2.5 | 0.7 | 1.0 | 0.4 | 
 | |
Лабораторная работа № 4. Построение графика функции
1. Условие задачи.
Нарисовать график функции RN = Ab Sin(Ab) на отрезке [c, d ].
13
 
2. Постановка задачи. Вводимые переменные: с – начало отрезка;
d – конец отрезка;
c, d – вещественные числа;
mg,mv – масштабы по вертикали и по горизонтали. Проверка исходных данных.
Необходимо учитывать, что переменные c, d должны соответствовать следующим условиям: d > c. Если данные не соответствуют этим условиям, необходимо повторить ввод данных.
1. Для решения этой задачи рассчитаем значение промежуточной переменной shag – шаг по формуле:
shag = d20− c ,
2. Выводимые переменные Ab, RN. Организуем цикл, в котором переменная цикла
Ab должна меняться в пределах от Ab = c до Ab = d c шагом shag. Начальное значение
Abнач = c, Abслед = Ab + shag, пока Ab ≤ d .
Затем рассчитаем масштаб по горизонтали и вертикали по формулам:
| 
 | mg = | 320 | ; | mv = | 200 | . | |
| 
 | Ab | 
 | |||||
| 
 | 
 | 
 | 
 | RN | max | ||
| 
 | 
 | max | 
 | 
 | 
 | ||
| 3. Результат | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| а) Таблица | Ab | RN | 
 | 
 | 
 | 
 | 
 | 
| ..... | ...... | 
 | 
 | 
 | 
 | 
 | 
 | 
| ..... | ...... | 
 | 
 | 
 | 
 | 
 | 
 | 
| ..... | ...... | 
 | 
 | 
 | 
 | 
 | 
 | 
б) График
14
 
Алгоритм
15
4. Текст программы:
Program Grafic;
{Автор}
Uses Graph, Crt; {подключение графического модуля}
Const
GraphDriver:Integer=1;
GraphMode:Integer=1;
Var c, d, RN, Ab, mg, mv, shag:Real;
Procedure VVOD (Var Z,Y:Real);{Объявление процедуры ввода.} Begin
WriteLn ('Введи начало и конец отрезка'); ReadLn (Z,Y);
If Z>Y then VVOD (Z,Y);
End;
Function f(k:Real):real; {Объявление функции для вычисления значений данной в условии задачи функции.}
Begin
f:=k*abs(Sin(k));
End;
Begin
VVOD (c,d); {Вызов процедуры ввода.} shag:=(d-c)/20;
writeln ('Ab ','RN'); Ab:=c;
while Ab<=d do
Begin
RN:=f(Ab); {Вызов функции.} writeln (Ab:5:2,RN:6:2); Ab:=Ab+shag;
End;
write ('Введи mg,mv'); readln (mg,mv);
InitGraph (GraphDriver,GraphMode,' ');{Обращение к графическому модулю}
Line (10,10,10,190); {рисует линию между точками (10, 10) и (10, 190)}
Line (10,190,310,190); Ab:=c;
RN:=f(c);
MoveTo (10+round(c*mg), 190-round(RN*mv));
{устанавливает курсор в точку с координатами (10+round(c*mg),190-round(RN*mv)}
16
 
while Ab<=d do
Begin
Ab:=Ab+shag;
RN:=f(Ab);
LineTo (10+round(Ab*mg), 190-round(RN*mv));
{рисует линию от текущего положения курсора до точки с координатами{10+round(Ab*mg),190-round(RN*mv)}
End;
if KeyPressed then CloseGraph;
{если нажать клавишу, то закроется графический режим}
end.
5. Результат:
Введи начало и конец отрезка 1 5 Ab Rn
1.000.84
1.20 1.12
…………………
…………………
5.004.79
Пример графической процедуры, позволяющей построение прямоугольной диаграммы:
Bar (10+round(Ab*mg), 190, 10+round((Ab+shag)*mg), 190-round(f(Ab+shag)*mv));
{рисует закрашенный прямоугольник с диагональными точками 10+round(Ab*mg), 190 и 10+round((Ab+shag)*mg), 190round(f(Ab+shag)*mv)}
17
Лабораторная работа № 5. Строковые типы и операции над ними
Объявление строковой величины: var Fam:string; Операции над строковыми переменными:
x: = length(Fam); – подсчитывает количество символов в слове Fam;
k: = pos('н',Fam); – определяет номер позиции символа «н» в слове Fam;
VR: = Copy(Fam,N,Z); – вырезает из слова Fam Z символов, начиная с символа номер N.
Пример. Fam:=’Иванов’; For k:=1 to 4 do Begin
VR:=copy(Fam,k,3);
writeln(VR);
end;
Результат:
ива
ван
ано
нов
Выполнение лабораторной работы рассмотрим на конкретном примере.
1. Условие задачи:
Подсчитать количество химических формул, в которые входят две молекулы кислорода.
2. Постановка:
Вводимые переменные: FHE[i] – элемент массива химических формул. Промежуточные переменные: i – номер формулы , R – номер символа, VR – вырезка
из FHE[i].
Выводимые переменные: kol – количество формул. Представление результата:
kol =……
18
 
3. Алгоритм:
начало
i = 1
Введи формулу
FHE[i]
i = i + 1
| нет | да | 
i > 20
kol = 0
i = 1
длина FHE[i]
R = 1
Вырезка двух символов
нет да
VR=’O2’
kol = kol+1
R = DF
R = R + 1
нет да
R > DF–1
I = I + 1
| нет | I > 20 | да | kol | конец | 
| 
 | 
 | 
4. Текст программы:
Program Him;
19
{составил ……}
var FHE:array[1..20] of string[15]; DF, i, R, kol:word; VR:string[2];
begin
for i:=1 to 20 do
begin
write('введи формулу '); readln(FHE[i]);
end;
kol:=0;
for i:=1 to 20 do begin
DF:=length(FHE[i]);
R:=1; repeat
VR:=copy(FHE[i],R,2); if VR='O2' then
begin kol:=kol+1; R:=DF;
end;
R:=R+1; until R>DF-1;
end;
Write(kol);
end.
5. Результат
Введи формулу C2H5OH Введи формулу H2O
……………………………
введи формулу СO2 kol = 12
Библиографический список
1.Немногих С. А. TurboPascal. Программирование на языке высокого уровня. СПб.:
Питер, 2007. – 544 с.
2.Павловская Т. А. Паскаль. Программирование на языке высокого уровня. СПб.:
Питер, 2007. – 393 с.
3.Меняев М.Ф. Информатика и основы программирования. М.: Омега-Л, 2007. – 458 с.
20
