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

1346 (Pascal)

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

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

{file of string[20]}

нет

да

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

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