1346 (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.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;
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
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
12
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.
4.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 |
|
5.Лабораторная работа №4. Построение графика функции
5.1.Условие задачи:
Нарисовать график функции RN Ab Sin(Ab) на отрезке c, d .
5.2. Постановка: Вводимые переменные: с - начало отрезка
d - конец отрезка.
c, d- вещественные числа.
mg,mv-масштабы по вертикали и по горизонтали. Проверка исходных данных:
Необходимо учитывать, что переменные c, d должны соответствовать следующим условиям: d>c. Если данные не соответствуют этим условиям, необходимо повторить ввод данных.
13
1.Для решения этой задачи рассчитаем значение промежуточной переменной shag - шаг по формуле:
shag
d c 20
,
2. Выводимые переменные Ab, RN. Организуем цикл, в котором переменная цикла Ab должна меняться в пределах от Ab=c до Ab=d c шагом shag. Начальное
значение Abнач= c, Abслед=Ab+shag, пока Ab d .
Затем рассчитаем масштаб по горизонтали и вертикали по формулам:
mg
320 Abmax
;
mv |
200 |
|
RN |
||
|
||
|
max |
.
3. Результат |
|
|
а) Таблица |
Ab |
RN |
|
..... |
...... |
|
..... |
...... |
|
..... |
...... |
б) График |
|
|
|
|
|
|
|
|
14
Алгоритм
15
5.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),190round(RN*mv)}
while Ab<=d do
Begin
Ab:=Ab+shag;
RN:=f(Ab);
LineTo (10+round(Ab*mg), 190-round(RN*mv));
16
{рисует линию от текущего положения курсора до точки с координатами{10+round(Ab*mg),190-round(RN*mv)}
End;
if KeyPressed then CloseGraph;
{если нажать клавишу, то закроется графический режим}
end.
5.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)}
6. Лабораторная работа №5.Строковые типы и операции над ними
Операции над строковыми переменными:
x:=length(Fam); - подсчитывает количество символов в слове Fam k:=pos('н',Fam); - определяет номер позиции символа “н” в слове Fam
VR:=Copy(Fam,N,Z); - вырезает из слова Fam Z символов, начиная с символа номер
N
17
Пример:
Fam:=’Иванов’;
For k:=1 to 4 do Begin
VR:=copy(Fam,k,3);
writeln(VR);
end;
Результат
ива
ван
ано
нов
Выполнение лабораторной работы рассмотрим на конкретном примере.
6.1.Условие задачи:
Подсчитать количество химических формул, в которые входят две молекулы кислорода.
6.2.Постановка:
Вводимые переменные: FHE[i] – элемент массива химических формул Промежуточные переменные: i – номер формулы , R – номер символа, VR – вырезка из FHE[i],
Выводимые переменные: kol – количество формул Представление результата:
kol=……
6.3.Алгоритм:
начало
i=1
Введи формулу
FHE[i]
i=i+1
Нет |
да |
i>20
18
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 |
конец |
|
|
6.4. Текст программы:
Program Him;
{составил ……}
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);
19
if VR='O2' then begin
kol:=kol+1;
R:=DF;
end;
R:=R+1; until R>DF-1;
end;
Write(kol);
end.
6.5.Результат
Введи формулу C2H5OH Введи формулу H2O
……………………………
введи формулу СO2
kol=12
Библиографический список
1.Немногих С. А. TurboPascal. Программирование на языке высокого уровня. СПб.:
Питер, 2003 - 544с.
2.Павловская Т. А. Паскаль. Программирование на языке высокого уровня. СПб.:
Питер, 2003 - 393с.
3.Культин Н. Б. Программирование в TurboPascal 7.0. и Delphi.СПб.: BHV Санкт-Петербург, 1997 - 240с., ил.
4.Методические указания по программированию на языке Pascal:для студентов технических специальностей.-Самара:СамГАПС,2003-27 с.
20