Готовые практические работы по информатике 11 класс 7 глава
Оценка 5

Готовые практические работы по информатике 11 класс 7 глава

Оценка 5
docx
13.06.2021
Готовые практические работы по информатике 11 класс 7 глава
practice11-7 (2).docx

Глава 7.       Объектно-ориентированное программирование

Практические работы и проекты

Проект № 1.
Движение на дороге

1.       Изучите материал § 48 учебника (создание объектов в программе).

2.       Постройте программу, которая описана в тексте параграфа. Используя выбранную среду программирования, изобразите движение машин по дороге в текстовом или графическом режиме. Для этого дополните класс TCar.

3.       program 1;

 

uses Crt;

{---------------------------------------------

  Класс TRoad - модель дороги

---------------------------------------------}

type TRoad = class

       Length: real;

       Width: integer;

       constructor Create(length0: real; width0: integer);

     end;

{--------------------------------------------

  Класс TCar - модель автомашины

---------------------------------------------}

type TCar = class

       X, V: real;

       P: integer;

       road: TRoad;

       procedure show;    { + метод для показа машины на экране }  

       procedure hide;    { + метод для скрытия машины с экрана }

       procedure move;

       constructor Create(road0: TRoad;

                          p0: integer; v0: real);

     end;

{---------------------------------------------

  Класс TRoad - модель дороги

  Реализация методов.

---------------------------------------------}

constructor TRoad.Create(length0: real; width0: integer);

begin

  if length0 > 0 then

       Length := length0

  else Length := 1;

  if width0 > 0 then

       Width := width0

  else Width := 1; 

end;

 

{---------------------------------------------

  Класс TCar - модель автомашины

  Реализация методов.

---------------------------------------------}

constructor TCar.Create(road0: TRoad;

                        p0: integer; v0: real);

begin

  road := road0; P := p0; V := v0;

end;

 

{ + TCar.show: показать машину на экране }

procedure TCar.show;

begin

  GotoXY(Round(X+1), P);

  write('->');

end;

 

{ + TCar.hide: скрыть машину с экрана }

procedure TCar.hide;

begin

  GotoXY(Round(X+1), P);

  write('  ');

end;

 

procedure TCar.move;

begin

  hide;

  X := X + V;

  if X > road.Length then X := 0;

  show;

end;

 

{---------------------------------------------

  Основная программа

---------------------------------------------}

 

const N = 3;

var road: TRoad;

    cars: array [1..N] of TCar;

    i: integer;

 

begin

  ClrScr;

  road := TRoad.Create(60, N);

  for i:=1 to N do begin

    cars[i] := TCar.Create(road, i, 2.0*i);

    cars[i].show; { + показать машины в исходном положении }

  end; 

  repeat

    for i:=1 to N do begin

      cars[i].move;    

    end; 

    delay(200);

  until keypressed;

end.

4.        

5.       *Добавьте в модель светофор, который переключается автоматически по программе (например, 5 с горит красный свет, затем 1 с – жёлтый, потом 5 с – зеленый и т.д.). Измените классы так, чтобы машина запрашивала у объекта Дорога местоположение ближайшего светофора, а затем обращалась к светофору для того, чтобы узнать, какой сигнал горит. Машины должны останавливаться у светофора с запрещающим сигналом

6.        

program 2;

 

uses Crt;

 

{---------------------------------------------

  Класс TLight - модель светофора

---------------------------------------------}

type TLightColor = (green = 10, red = 12, yellow = 14);

 

type TLight = class

       color: TLightColor; { текущий цвет светофора }

       X: integer;         { координата светофора }

       stateCounter: integer;

       constructor Create(X0: integer);

       procedure timeStep; { увеличить счётчик времени светофора }

       procedure show;     { показать светофор }

     end;

 

{---------------------------------------------

  Класс TRoad - модель дороги

---------------------------------------------}

type TRoad = class

       Length: real;

       Width: integer;

       light: TLight;                          { ссылка на светофор }   

       constructor Create(length0: real; width0: integer);

       procedure addLight(light0: TLight);     { добавить светофор }

       function nextLight(X: integer): TLight; { запрос следующего светофора }

     end;

{--------------------------------------------

  Класс TCar - модель автомашины

---------------------------------------------}

type TCar = class

       X, V: real;

       P: integer;

       road: TRoad;

       procedure show;    

       procedure hide;    

       procedure move;

       constructor Create(road0: TRoad;

                          p0: integer; v0: real);

     end;

{---------------------------------------------

  Класс TRoad - модель дороги

  Реализация методов.

---------------------------------------------}

constructor TRoad.Create(length0: real; width0: integer);

begin

  if length0 > 0 then

       Length := length0

  else Length := 1;

  if width0 > 0 then

       Width := width0

  else Width := 1; 

end;

 

{ + добавить светофор }

procedure TRoad.addLight(light0: TLight);   

begin

  light := light0; { лучше сделать массив светофоров... }

end;

 

{ + запрос следующего светофора } 

function TRoad.nextLight(X: integer): TLight;

begin

  Result := light;

  if (light <> nil) and (light.X < X) then

    Result := nil;

end;

 

{---------------------------------------------

  Класс TCar - модель автомашины

  Реализация методов.

---------------------------------------------}

constructor TCar.Create(road0: TRoad;

                        p0: integer; v0: real);

begin

  road := road0; P := p0; V := v0;

end;

 

procedure TCar.show;

begin

  GotoXY(Round(X+1), P+1);

  write('->');

end;

 

procedure TCar.hide;

begin

  GotoXY(Round(X+1), P+1);

  write('  ');

end;

 

procedure TCar.move;

var light: TLight;

begin

  hide;

  light := road.nextLight(trunc(X));

  X := X + V;

  if (light <> nil) and (light.color <> green)

     and (X+2 > light.X) then

     X := light.X-2;

  if X > road.Length then X := 0;

  show;

end;

 

{---------------------------------------------

  Класс TLight - модель светофора

  Реализация методов.

---------------------------------------------}

constructor TLight.Create(X0: integer);

begin

  X := X0;

  stateCounter := 0;

  color := red;

end;

 

procedure TLight.timeStep;

begin

  Inc(stateCounter);

  case stateCounter of

    50: color := yellow;

    60: color := green;

    110: color := yellow;

    120: begin

           color := red;

           stateCounter := 0;

         end;

  end;

  show;

end;

 

procedure TLight.show;

begin

  GotoXY(X, 1);

  TextBackground( integer(color) );

  write(' ');

  TextBackground(black);

end;

 

{---------------------------------------------

  Основная программа

---------------------------------------------}

const N = 3;

var road: TRoad;

    cars: array [1..N] of TCar;

    light: TLight;             { + светофор }

    i: integer;

 

begin

  ClrScr;

 

  road := TRoad.Create(60, N);

 

  light := TLight.Create(30);

  light.show;       

 

  road.addLight(light);         { + связать светофор с дорогой }

 

  for i:=1 to N do begin

    cars[i] := TCar.Create(road, i, 2.0*i);

    cars[i].show;

  end; 

 

  repeat

    for i:=1 to N do

      cars[i].move;    

    light.timeStep;         

    delay(100);

  until keypressed;

end.

7.       .

Практическая работа № 62.  
Скрытие внутреннего устройства объектов

1.       Измените построенную ранее программу моделирования движения автомашин по дороге так, чтобы все поля у объектов были закрытыми. Используйте свойства для доступа к данным.

Проект № 2.
Логические элементы (иерархия)

1.       Используя материалы § 50 учебника, постройте модуль, описывающий иерархию классов логических элементов. Для проверки его работы напишите программу, которая строит таблицу истинности последовательного соединения логических элементов «И» и «НЕ».

2.       Добавьте в иерархию классов элементы «исключающее ИЛИ», «И-НЕ» и «ИЛИ-НЕ». Вынесите всю построенную систему классов логических элементов в отдельный модуль LogElement.

3.       «Соберите» в программе RS-триггер из двух логических элементов «ИЛИ-НЕ», постройте его таблицу истинности (обратите внимание на вариант, когда оба входа нулевые).

program Project_2_6;

 

uses LogElement;

 

{---------------------------------------------

  Класс TDecoder - дешифратор "2 в 4"

---------------------------------------------}

type

  TDecoder = class(TLog2In)

  protected

    procedure calc; override;

  public

    function Output(no: integer): boolean;

  end;

 

{---------------------------------------------

  Класс TDecoder - дешифратор "2 в 4"

  Реализация методов.

---------------------------------------------}

procedure TDecoder.calc;

begin

  FRes:= not In1 and not In2;

end;

 

function TDecoder.Output(no: integer): boolean;

begin

  Result := Res;

  case no of

    1: Result := not In2 and In1;

    2: Result := In2 and not In1;

    3: Result := In2 and In1;

  end;

end;

 

{---------------------------------------------

  Основная программа

---------------------------------------------}

var decoder: TDecoder;

    C0, C1: boolean;

begin

  decoder := TDecoder.Create;

 

  writeln('| C1| C0|| X3| X2| X1| X0');

  writeln('--------------------------');

 

  for C1:=False to True do

    for C0:=False to True do begin

      decoder.In1 := C0;

      decoder.In2 := C1;

      writeln('| ', integer(C1), ' | ', integer(C0),

            ' || ', integer(decoder.Output(3)),

             ' | ', integer(decoder.Output(2)),

             ' | ', integer(decoder.Output(1)),

             ' | ', integer(decoder.Output(0)));

  end;

 

End.

 

DC

С1 0011

C0 0101

Х3 0001

Х2 0010

Х1 0100

Х0 1000

 

 


 

Практическая работа № 63.  
Создание формы в RAD-среде

1.       Постройте программу с графической формой, описание которой приведено в § 52 учебника.

2.       Определите обработчики событий

OnShow (вывод формы на экран) – установить размеры формы 400 на 100 пикселей;

OnClick (щелчок мыши по форме) – уменьшить ширину и высоту формы на 10 пикселей, если соответствующий размер больше, чем 100 пикселей;

OnResize (изменение размеров формы) – вывести размеры формы в заголовке окна.

3.       *[Для Delphi] Найдите в Интернете, как ограничить пределы изменения размеров формы (то есть установить минимальную и максимальную ширину и высоту). Добавьте эти возможности в программу.

Практическая работа № 64.  
Использование компонентов

1.       Постройте программу для просмотра рисунков, описание которой приведено в § 53 учебника.

2.      

Практическая работа № 65.  
Компоненты для ввода и вывода данных

1.       Дополните предыдущую программу так, чтобы рисунок, размер которого меньше, чем отведенное для его поле, центрировался в рамках этого поля.

Подсказка: нужно «подложить» под компонент TImage панель (компонент TPanel), у компонента TImage отключить принудительное выравнивание, и менять положение и размеры этого компонента при изменении размеров формы (можно использовать обработчик события OnResize панели, на которой лежит TImage).

 


 

Практическая работа № 66.  
Разработка компонентов

1.       Постройте программу с компонентом TIntEdit, описание которой приведено в § 54 учебника.

2.       *Найдите в Интернете информацию по установке нового компонента в палитру компонентов среды Lazarus (или Delphi) и выполните такую установку. Измените программу так, чтобы она использовала компонент TIntEdit из палитры компонентов. Учтите, что при установке компонента в Lazarus потребуется пересборка всей среды (в Delphi – нет).

Проект № 3.
Модель и представление

Измените программу представленную в учебнике так, чтобы она вычисляла:

а)дробную часть чисел.

б)произведение чисел меньших 30

1.        в) сумму чисел которые попадают в промежуток от 10 до 50( включительно оба).

 


 

Глава 7. Объектно-ориентированное программирование

Глава 7. Объектно-ориентированное программирование

Класс TCar - модель автомашины

Класс TCar - модель автомашины

N do begin cars[i].move; end; delay(200); until keypressed; end

N do begin cars[i].move; end; delay(200); until keypressed; end

Light(light0: TLight); { добавить светофор } function nextLight(X: integer):

Light(light0: TLight); { добавить светофор } function nextLight(X: integer):

Result := light; if (light <> nil) and (light

Result := light; if (light <> nil) and (light

Класс TLight - модель светофора

Класс TLight - модель светофора

Основная программа ---------------------------------------------} const

Основная программа ---------------------------------------------} const

Практическая работа № 62.

Практическая работа № 62.

Проект № 2. Логические элементы (иерархия) 1

Проект № 2. Логические элементы (иерархия) 1

Result := In2 and In1; end; end; {---------------------------------------------

Result := In2 and In1; end; end; {---------------------------------------------

DC С1 0011 C0 0101 Х3 0001

DC С1 0011 C0 0101 Х3 0001

Практическая работа № 62.

Практическая работа № 62.

Практическая работа № 62.

Практическая работа № 62.

Практическая работа № 62.

Практическая работа № 62.

Практическая работа № 62.

Практическая работа № 62.

Проект № 3. Модель и представление

Проект № 3. Модель и представление
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
13.06.2021