Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2606 (Turbo Pascal)

.pdf
Скачиваний:
16
Добавлен:
09.04.2015
Размер:
332.07 Кб
Скачать

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 = d20c ,

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]