Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1346.doc
Скачиваний:
11
Добавлен:
09.04.2015
Размер:
436.22 Кб
Скачать
  1. Лабораторная работа №4. Построение графика функции

5.1. Условие задачи:

Нарисовать график функции на отрезке.

5.2. Постановка:

Вводимые переменные:

с - начало отрезка

d- конец отрезка.

c,d- вещественные числа.

mg,mv-масштабы по вертикали и по горизонтали.

Проверка исходных данных:

Необходимо учитывать, что переменные c, d должны соответствовать следующим условиям:d>c. Если данные не соответствуют этим условиям, необходимо повторить ввод данных.

  1. Для решения этой задачи рассчитаем значение промежуточной переменной shag- шаг по формуле:

,

  1. Выводимые переменные Ab, RN. Организуем цикл, в котором переменная циклаAbдолжна меняться в пределах отAb=cдоAb=dcшагомshag. Начальное значениеAbнач=c,Abслед=Ab+shag, пока.

Затем рассчитаем масштаб по горизонтали и вертикали по формулам:

; .

  1. Результат

а) Таблица AbRN

..... ......

..... ......

..... ......

б) График

Алгоритм

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),190-round(RN*mv)}

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.5. Результат:

Введи начало и конец отрезка 1 5

AbRn

1.00 0.84

1.20 1.12

…………………

…………………

5.00 4.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), 190-round(f(Ab+shag)*mv)}

6. Лабораторная работа №5.Строковые типы и операции над ними

Операции над строковыми переменными:

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;

Результат

ива

ван

ано

нов

Выполнение лабораторной работы рассмотрим на конкретном примере.

6.1. Условие задачи:

Подсчитать количество химических формул, в которые входят две молекулы кислорода.

6.2. Постановка:

Вводимые переменные: FHE[i] – элемент массива химических формул

Промежуточные переменные: i – номер формулы , R – номер символа, VR – вырезка из FHE[i],

Выводимые переменные: kol – количество формул

Представление результата:

kol=……

6.3. Алгоритм:

i=1

i=i+1

Нет да

kol=0

i=1

длина FHE[i]

R=1

Вырезка двух символов

Нет да

kol=kol+1

R=DF

R=R+1

Нет да

I=I+1

Нет да

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);

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

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