- •«Информатика»
- •Введение
- •Требования к оформлению отчёта по лабораторной работе
- •Лабораторная работа №1. Табуляция функции
- •3. Лабораторная работа №2. Одномерные массивы
- •4. Лабораторная работа №3. Двухмерные массивы
- •Лабораторная работа №4. Построение графика функции
- •6. Лабораторная работа №5.Строковые типы и операции над ними
Лабораторная работа №4. Построение графика функции
5.1. Условие задачи:
Нарисовать график функции на отрезке.
5.2. Постановка:
Вводимые переменные:
с - начало отрезка
d- конец отрезка.
c,d- вещественные числа.
mg,mv-масштабы по вертикали и по горизонтали.
Проверка исходных данных:
Необходимо учитывать, что переменные c, d должны соответствовать следующим условиям:d>c. Если данные не соответствуют этим условиям, необходимо повторить ввод данных.
Для решения этой задачи рассчитаем значение промежуточной переменной shag- шаг по формуле:
,
Выводимые переменные Ab, RN. Организуем цикл, в котором переменная циклаAbдолжна меняться в пределах отAb=cдоAb=dcшагомshag. Начальное значениеAbнач=c,Abслед=Ab+shag, пока.
Затем рассчитаем масштаб по горизонтали и вертикали по формулам:
; .
Результат
а) Таблица 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
Библиографический список
Немногих С. А. TurboPascal. Программирование на языке высокого уровня. СПб.: Питер, 2003 - 544с.
Павловская Т. А. Паскаль. Программирование на языке высокого уровня. СПб.: Питер, 2003 - 393с.
Культин Н. Б. Программирование в TurboPascal 7.0. и Delphi.СПб.: BHV Санкт‑Петербург, 1997 - 240с., ил.
Методические указания по программированию на языке Pascal:для студентов технических специальностей.-Самара:СамГАПС,2003-27 с.