Персональная страничка
Диканева Тараса
Викторовича

Главная \ Преподавательское \ Программирование для начинающих

11. Процедуры и функции

Предыдущий раздел:

Следующий раздел:

Контрольная работа №10

1. Напишите заголовки следующих подпрограмм:

    а) процедуры, имеющей один целочисленный параметр-значение и один вещественный параметр-переменную;
    б) процедуры, имеющей два вещественных параметра-переменных;
    в) функции, имеющей два целочисленных аргумента и принимающей вещественные значения.

2. Что выведет программа:

  var
    i: integer;

  procedure Hello(n: integer);
  var
    i: integer;
  begin
    for i:=1 to n do
      write('Hello_');
    writeln;
  end;

  begin
    Hello(5);
    for i:=1 to 3 do
      Hello(i-1);
    Hello(3);
  end.

3. Что выведет программа

  var
    a, b: integer; {Глобальные переменные}

  procedure P1(a, b: integer);
  begin
    a:=a+1;	
    b:=2*b+1;
    writeln(a-b);
  end;

  procedure P2(var a, b: integer);
  begin
    a:=a+1;
    b:=2*b+1;
    writeln(a-b);
  end;

  procedure P3(var a: integer; b: integer);
  begin
    a:=a+1;
    b:=2*b+1;
    writeln(a-b);
  end;

  procedure P4(a: integer; var b: integer);
  begin
    a:=a+1;
    b:=2*b+1;
    writeln(a-b);
  end;

  begin
    a:=1;
    b:=1;
    P1(a, b);
    P1(b, a);
    P1(a, a);
    P1(2*b, b-a);
    P1(a+1, a-1);
    P1(a+1, 5);
    P1(0, 0);
    P1(100, 100);
    writeln(a, b);
    P2(a, b);
    P2(b, a);
    P2(a, a);
    P2(b, b);
    writeln(a, b);
    P3(a, b);
    P3(b, a);
    P3(a, a);
    P3(b, b);
    P3(a, a+1);
    P3(b, a+1);
    writeln(a, b);
    P4(a, b);
    P4(b, a);
    P4(a, a);
    P4(b, b);
    P4(a+1, b);
    writeln(a, b);
  end.

4. Что выведет программа:

  const
    n = 5;
  type
    TIntArray = array [1..n] of integer;
  var
    x: TIntArray;
    i, m: integer;

  procedure P(var x: TIntArray; var m:integer);
  var
    i: integer;
  begin
    m:=1;
    for i:=2 to n do
      if x[i]>x[m] then
        m:=i;
  end;

  begin
    for i:=1 to n do
      x[i]:=i mod 3;
    for i:=1 to n do
    begin
      P(x, m);
      x[m]:=0;
    end;
    for i:=1 to n do
      writeln(x[i]);
  end.

5. Что выведет программа:

  const
    n = 5;
  type
    TIntArray = array [1..n] of integer;
  var
    x, y: TIntArray;
    i: integer;

  procedure Fill(var x: TIntArray);
  var
    i: integer;
  begin
    for i:=1 to n do
      x[i]:=i;
  end;

  procedure P(var x, y: TIntArray);
  var
    i: integer;
  begin
    for i:=1 to 5 do
    begin
      y[i]:=y[i]+1;
      x[i]:=x[i]+y[n-i+1];
    end;
  end;

  begin
    Fill(x);
    Fill(y);
    P(x, y);
    P(y, x);
    for i:=1 to 5 do
      writeln(x[i]);
  end.

6. Что выведет программа:

  const
    n = 3;
  type
    TIntArray = array [-n..n] of integer;
  var
    x: TIntArray;
    i: integer;

  procedure P1(var a: TIntArray);
  var
    i, x: integer;
  begin
    x:=a[n];
    for i:=n-1 downto 1 do
      a[i+1]:=a[i];
    a[1]:=x;
  end;

  procedure P2(var a: TIntArray);
  var
    i, x: integer;
  begin
    x:=a[n];
    for i:=n-1 downto 1 do
      a[i+1]:=a[i];
    a[1]:=x;
  end;

  begin
    for i:=-n to n do
      x[i]:=i+n+1;
    P1(x);
    P2(x);
    for i:=-n to n do
      writeln(x[i]);
  end.

7. Что выведет программа:

  var
    x, y, z: integer;

  procedure Step(var x, y: integer);
  begin
    if x>y then
      x:=x-y
    else
      y:=y-x;
  end;

  function Nod(x, y: integer): integer;
  begin
    while x<>y do
      Step(x, y);
    Nod:=x;
  end;

  begin
    x:=9;
    y:=27;
    z:=3;
    writeln(Nod(Nod(x, y), z));
  end.

Следующий раздел:

Предыдущий раздел:

5 комментариев

  1. АленА

    В 4 задании ошибка и опечатка:
    ошибка — переменную m нужно еще ввести в глобальные переменные,
    опечатка — массив в процедуре описан TIntAray с одной буквой r

  2. АленА

    В 6 задании две опечатки:
    1-я — лишняя t в слове intetger,
    2-я — массив в процедуре P2 описан array of integer, а должен был быть TIntArray

  3. Taras

    > В 4 задании ошибка и опечатка:
    > ошибка — переменную m нужно еще ввести в глобальные переменные,
    > опечатка — массив в процедуре описан TIntAray с одной буквой r

    > В 6 задании две опечатки:
    > 1-я — лишняя t в слове intetger,

    Спасибо, исправил.

    > 2-я — массив в процедуре P2 описан array of integer, а должен был быть TIntArray

    Действительно, в PascalABC.net не работает. В старом Borland Pascal и Delphi работало, а тут не хочет.
    array of integer — в старом Паскале был универсальный тип для любого массива.

    Спасибо, тоже исправил.

  4. Alex_Kot

    В примере 6 процедуры P1 и P2 одинаковы.
    Можно исключить P2, а в теле программы дважды вызвать P1.
    Либо применит две процедуры, при этом P1 использовать для заполнения массива (в примере 5: procedure Fill).

  5. Alex_Kot

    Меньше путаницы в голове, если переменные в теле основной программы и в процедурах обозначать разными литерами. Например так:
    Program K10_5; {RESULT?}
    const
    n = 5;
    type
    TIntArray = array [1..n] of integer;
    var
    a, b: TIntArray;
    i: integer;

    procedure Fill(var x: TIntArray);
    var
    i: integer;
    begin
    for i:=1 to n do
    x[i]:=i;
    end;

    procedure P(var x, y: TIntArray);
    var
    i: integer;
    begin
    for i:=1 to 5 do
    begin
    y[i]:=y[i]+1;
    x[i]:=x[i]+y[n-i+1];
    end;
    end;

    begin
    Fill(a);
    Fill(b);
    P(a, b);
    P(b, a);
    for i:=1 to 5 do
    writeln(a[i], b[i]);
    end.

Добавить комментарий