2606 (Turbo Pascal)
.pdfi = 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