Модуль crt

  • docx
  • 30.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л3-00100.docx

Модуль crt

Приведенные ниже процедуры и функции, расширяющие возможности текстового режима экрана, находятся в станндартном модуле crt.tpu и будут доступны в программе понсле объявления uses crt.

I. Функция без параметров keypressed возвращает true, если на клавиатуре была нажата любая символьная клавиша, и false Ч в противном случае. Не задерживанет выполнение программы.

II. Функция без параметров readkey возвращает символ нажатой клавиши без эха повтора на экране. Приостаннавливает выполнение программы до нажатия на люнбую клавишу.

III. Функции без параметров wherexwherey возвращают горизонтальную или вертикальную координату текущей позиции курсора относительно текущего окна.

IV. Процедура без параметров cireol удаляет все символы от текущей позиции курсора до конца строки без пенремещения курсора.

V. Процедура без параметров delline удаляет строку, на которой находится курсор, и перемещает все стронки ниже этой строки на строку вверх. Нижняя строка очищается.

VI. Процедура без параметров clrscr очищает экран и понмещает курсор в верхний левый угол.

VII. Процедура delay приостанавливает работу программы на указанное число миллисекунд (t): delay(t);

VIII. Процедура gotoxy перемещает курсор в точку с заданнными координатами х,у текстового экрана или окна, если оно задано: gotoxy(x,y);

IX. Процедура без параметров insline вставляет пустую строку в позицию курсора.

X.  Процедуры без параметров highvideolowvideonorm-video устанавливают высокую, низкую, нормальную ярнкость символов.

XI. Процедура sound включает звуковой генератор с часнтотой hz, заданной в герцах: sound(hz);

XII. Процедура без параметров nosound выключает звуконвой генератор. Обязательная последовательность действий для вклюнчения звука: ...sound(...);delay(...); nosound;...

XIII. Процедуры textcolortextbackground устанавливают цвет символов и цвет фона в текстовом режиме:

textcolor(цвет); textbackground(цвет);

Допустимые значения для цвета приведены в пункте 3.11.5(1).

XIV. Процедура window определяет текстовое окно на экнране:

window(x1,y1,x2,y2); где х1 ,у1 ,х2,у2 Ч координаты левого верхнего угла и правого нижнего угла экрана 0< = х< = 80,0< = у< = 25.

Пример 1

В случайных точках экрана появляется по десять окружнонстей, закрашенных случайным цветом сначала радиуса 30, потом 40 и 50 точек. Затем по очищенному экрану переменщается огненный шар из верхнего левого в нижний правый угол экрана.

program P11а;

uses graph,crt;

var x,y,r,c,dr,mo,i,b: integer;

uk: ^integer;

begin

    randomize;

    dr:= detect;

    initgraph(dr,mo,'c:\tp7\bgi');

    r:=30;

    while r< = 50 do

        begin

            cleardevice;

            for i:=1 to 10 do

                begin

                    x: = random(getmaxx- 2*r) + r; y:= random(getmaxy- 2*r) + r;

                    c:=random(getmaxcolor) + 1; setcolor(c); setfillstyle(8,c);

                    circle(x,y,r); floodfill(x,y,c); delay(SOO);

                end;

            delay(IOOO); inc(r,10)

        end;

    cleardevice;

    setbkcolor(BLUE); {заглавные буквы Ч для вашего вниманния!}

    setcolor(YELLOW); setfillstyle(1,RED);

    circle(r,r,r); floodfill(r,r,YELLOW);

    b:=imagesize(0,0,2*r,2*r); getmem(uk,b);

    getimage(0,0,2*r,2*r, ukA);

    cleardevice;

    x:=0; y:=0;

    while(x< = getmaxx-2*r) and (y< = getmaxy-2*r) do

        begin

            putimage(x,y,uk^,0); delay(500); putimage(x,y,uk^,1);

            inc(x,10); inc(y,10);

        end;

    closegraph;

end.

Пример 2

Построение графика функции у=1/(х2-х+1) для 1<=х< = 3 (а< = х< = Ь) не более чем в п< = 40 точках текстового экрана. От левого края отступаем на m позиций, ось х направлена сверху вниз (если точек много, то можно выполнять задержку экрана либо выводить график во внешний файл), ось у направлена слева направо; на значения функции от минимума до максимума отводится w позиций (m + w<80 позиций). Переменная k определяет положение оси х относительно отступа ma  L Ч положение *, для значения функции.

program P11Ь;

uses crt;

const m = 10; w = 61 ;

var y: array[1..41] of real;

c: string[71];

i,k,L,n: integer;

a,b,x,h,ymax,ymin,my: real;

begin

    clrscr;

    readln(a,b,n); ymax:=-maxint; ymin:=maxint; h:=(b-a)/n;

    x: = a;

    for i:=1 to n do

        begin

            y[i]:=1/(x*x-x+1);

            if y[i]>ymax then ymax:=y[i];

            if y[i]<ymin then ymin:=y[i]; x:=x + h;

        end;

     my:=(ymax-ymin)/(w- 1); {масштаб по оси у}

     k:=round(abs(ymin)/my) + m; {положение оси х}

    writeln(СГрафик функции':35);

    writeln(' .................................................... ЦxТ:71

    for i:=1 to m + w do

        c[i]:=' '; {строка из 71 пробела}

    c[k]:=T;

    for i:=1 to n do

        begin

            if(i-1) mod 20 = 0 then begin

                                                    writeln('После анализа нажми клавишу ENTER');

                                                    readln

                                                  end;

            L:=round((y[i]-ymin)/my) + m;

            c[L]:='*'; writeln(c);

            c[L]:=' '; {пробел убирает * в позиции L}

            if k = L then c[k]:=T;

        end;

    c[k]:='V; writeln(c);

    c[k]:='Y'; writeln(c);

end.

 

Пример 3

Для построения графика в графическом режиме используется весь экран за исключением отступов в 20 точек слева и снизу. Ось х идет слева направо, а ось у Ч снизу вверх.

program P11с;

uses graph, crt;

var y: array[1..101] of real;

i,k,L,n,mx,dr,mo: integer;

a,b,x,h,ymax,ymin,my: real;

xs: string[5];

begin

    clrscr;

    readln(a,b,n);

    ymax:=-maxint; ymin:=maxint; h:=(b-a)/n;

    x:=a;

    for i:=1 to n do

        begin

            if y[i]>ymax then ymax:=y[i];

            if y[i]<ymin then ymin:=y[i];  

            x: = x + h;

        end;

    dr:= detect; initgraph(dr,mo, 'c:\tp7\bgi');

    mx:=round((getmaxx-50)/n); {масштаб по оси х}

    my:=(ymax-ymin)/(getmaxy-20); {масштаб по оси у}

    k:=round(abs(ymin)/my); {положение оси х}

    line(20,20,20,getmaxy-20);

    outtextxy(18,20,Т^Т); outtextxy(10,10,'Y');

    line(20,getmaxy - 20 - k.getmaxx- 20,getmaxy - 20 - k);

    outtextxy(getmaxx-20,getmaxy-22-k,'>');

    outtextxy(getmaxx - 20,getmaxy - 1 5- k, 'X' );

    outtextxy(getmaxx Ц 100,getmaxy- 1 0, 'Y=xA2 - x + 1 '); x:= a;

    for i:= 1 to n do

        begin

                str(x.xs); L:= round((y[i]-ymin)/my);

                if (i-1) mod 5 =0 then outtextxy((i-1)*mx+20,getmaxy-15-k,xs);

                outtextxy((i-1)*mx+20,getmaxy-20-L,'*'); x:=x + h

        end;

    repeat  until keypressed;

    closegraph

end.

Пример 4

На экране организованы два окна: одно для ввода, другое для вывода данных. program P11duses crt;

var a,b,c: integer;

begin

    textbackground(white); textcolor(black); clrscr;

    window(1,20,30,25); textbackground(green); clrscr; read(a,b,c);

    window(1,1,30,15); textbackground(blue); clrscr;

    writeln(a:5, b:5,c:5);

end.