Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Использование множеств для решения задач в Паскале




Лабораторная работа 21.

Программирование в графическом режиме.

Лабораторная работа №20.

 

Цель: практическое знакомство с операторами графического режима в Паскале.

Программа изображает график функции. Для того чтобы можно было быстро настроить программу на любой вид функциональной зависимости, используем отдельную функцию для задания функциональной зависимости, в которой легко можно изменить одну строку. Сам график строим в виде отрезков прямых. Для многих функций такой график получается лучше, чем при прорисовке по отдельным точкам, к тому же это прекрасная возможность продемонстрировать действие процедур moveto и lineto, которые работают с текущим графическим указателем. Использование масштабных коэффициентов придает универсальность процедуре построения графика. При этом считаем, что график занимает все экранное пространство (ровно 640 точек) вне зависимости от введенного интервала изменения аргумента.

Программа для построения графиков функций.

uses graph;

var gd,gm:integer;

function f(x:real):real; {задание функции}

begin

f:=x*x; {здесь может быть любая функция}

end;

procedure drawgrafik(a,b:real); {a,b – начальное и конечное значения x}

var x,dx,max,min,koef:real;

k,x0,y0:integer; {x0,y0 – положение осей координат}

begin

dx:=(b-a)/639; {определили шаг изменения х (640 точек на графике, а интервалов 639)}

x:=a; max:=f(a); min:=f(a);

for k:=1 to 640 do {определяем область значений f(x)}

begin

if f(x)>max then max:=f(x);

if f(x)<min then min:=f(x);

x:=x+dx;

end;

koef:=479/(max-min); {коэффициент по оси х}

x:=a;

moveto(0,round(479-koef*(f(a)-min))); {начальное значение указателя}

for k:=1 to 639 do {строим график}

begin

x:=x+dx;

lineto(k,round(479-koef*(f(x)-min)));

end;

x0:=round(639*a/(a-b));

line(x0,0,x0,479); {ось y}

y0:=round(479-479*(min/(min-max)));

line(0,y0,639,y0); {ось х}

end;

begin

gd:=detect; initgraph(gd,gm,'');

drawgrafik(-4,4);

readln;closegraph

end.

 

 


Цель работы:

1. Получить первые необходимые навыки при использовании операторов в среде Турбо-Паскаль.

2. Научиться создавать, корректировать и выполнять простые программы с использованием названных структурных типов.

Ход выполнения лабораторной работы.

1) Прочитайте теорию по данной теме (см. лекции или учебник). Отметьте в отчете для лабораторных все, что считаете важным.

2) Загрузите язык Паскаль. Наберите в разных окнах программы, приведенные ниже. Запустите разобранные программы, поэкспериментируйте над ними…

3) Запишите в отчет выполненные индивидуальные задания.

4) Защитите лабораторную работу.

!!! Повторите материал по теме «Множества».

Задача 1. В произвольном тексте А: string определить, какие цифры встречаются, вывести их.

Подсказка: Пусть DI – тип множества всех встретившихся символов – цифр. Сначала DI=[]. Затем, просматривая текст, все цифры добавляются во множество DI. Они будут встречаться там в одном экземпляре, сколько бы одинаковых цифр не встретилось бы в тексте (по свойствам множества).(Наберите программу и объясните приведенное решение).

Type XX=set of ‘0’..’9’;

Var s:char; a:string; DI:XX; n,i:byte;

Begin write(‘Введите текст’);

Readln(A);

DI:=[]; n:=length(a);

For i:=1 to n do

If a[i] in [‘0’..’9’] then DI:=DI+[a[i]];

If DI=[] then writeln (‘В тексте цифр нет’) else writeln (‘В тексте следующие цифры’);

For s:=’0’ to ‘9’ do

If s in DI then write(s:3);

End.

Задача 2. Сформировать множества А и В, базовый тип которых 0..50, по заданному числу элементов для каждого множества. Найти число и сумму элементов, принадлежащих одновременно и А и В; выведите на экран все элементы множества А, не принадлежащие В.

Подсказка. Допустим n – количество элементов для множества А. Тогда при формировании А можно использовать цикл k:=0; Repeat… until k>= n, где k – это счетчик для множества.

Задача 3. Решить Задачу 2, если известно, что рассматриваются множества А и В, базовый тип которых – буквы русского и латинского алфавитов.

Подсказка. Для формирования множества из букв воспользуемся кодовой таблицей и все необходимые диапазоны кодов букв поместим в дополнительное множество М. Тогда при формировании В (или А) можно использовать тот же способ, что и в предыдущей задаче, например:

type mnog=set of char;

var a,b:mnog;

m:set of 0..255;

y,x,k,n:byte;

begin

m:=[65..90,97..122,128..175,224..239];

writeln;

writeln('Vvedite kol-vo elementov mn-va B);

readln(n); b:=[];

repeat

k:=0;

x:=random(255);

if x in M then B:=B+[chr(x)];

for y:=0 to 255 do

if chr(y) in b then k:=k+1;

until k>=n;

writeln ('Mn-vo B');

for x:=0 to 255 do

if chr(x) in B then write (chr(x):5);

writeln;




Поделиться с друзьями:


Дата добавления: 2015-06-26; Просмотров: 1283; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.