Pascaler
О проекте Теоретический материал Тестирование Архив задач
Войти в личный кабинет



О проекте


Преподавателям


Тема: Контрольная работа.

1. Данный фрагмент программы преобразуйте в подпрограмму, используя правила форматирования:

Program Primer; Var a: array[1..8] of integer; M, k: integer;
Begin for k:=1 to 8 do readln(a[k]);M:=a[1]; for k:=2 to 8 Do if M<a[k] Then M:=A[k]; Write(m)
End.

Сколько раз будет исполнен подчеркнутый оператор при заданном массиве: 3, 8, 7, 9, 4, 10, 2, 12:

  • 7;
  • 8;
  • 4;
  • 1.

Чему будет равно значение М?

2. Чему будет равно значение переменной К после исполнения фрагмента программы

K:=1; while (a[K]<>X) and (K<=10) do K:=K+1;
(Здесь Х=7, а в качестве элементов массива введены числа: 2, 3, 5, 9, 12, 0, 7, 6, 7.)

3. При наборе программы вычисления суммы отрицательных элементов массива

for k:=1 to 8 do readln(a[k]); s:=0; for k:=1 to 8 do if a[k]<0 then s:=s+1; write(s)
была допущена ошибка. Каким оказался ответ, если были введены числа: -1, 3, -2, 4, -5, 6, -7, 8.
Каким должен был быть оператор и чему равен правильный ответ?

4. Дано тело подпрограммы:

begin
for k:=1 to 4 do for g:=1 to 4 do a[k,g]:=g-k;q:=0; for k:=1 to 4 do for g:=1 to 4 do if a[k,g]<0 then begin q:=q+1; b[q]:=a[k,g] end; m:=b[1]; for k:=1 to q do if m<b[k] then m:=b[k]; writeln(m);
end;
Опишите заголовок подпрограммы и необходимые локальные переменные. Какое число будет выведено после ее выполнения?

5. Основное различие между процедурами и функциями заключается в том, что:

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

6. Формальные параметры процедуры:

описываются в ее заголовке;
перечисляются при вызове процедуры;
указываются при описании данных в программе;
указываются при описании промежуточных переменных процедуры.

7. Фактические параметры процедуры:

описываются в ее заголовке;
перечисляются при вызове процедуры;
указываются при описании данных в программе;
указываются при описании промежуточных переменных процедуры.

8. Задача о выборах

Пусть шесть населенных пунктов, обозначенные номерами от 1 до 6 (величина k), а пять кандидатов - номерами от 1 до 5 (величина n). Количество голосов, набранных кандидатами в каждом пункте, определяется формулой ak=random(10i+50), где i - номер Вашего варианта. В результате получается таблица результатов голосования, где значения в строках - данные из населенных пунктов, а в столбцах - данные по конкретным кандидатам. Создайте в подпрограмме одномерный массив с искомыми данными в соответствии со своим вариантом.

  1. Какое количество голосов было подано за первого и второго кандидатов во всех населенных пунктах? У кого из второго, четвертого и пятого кандидатов наивысший рейтинг?


  2. В каких населенных пунктах второй и четвертый кандидаты набрали максимальное количество голосов? Кто набрал максимальное, а кто минимальное количество голосов в первом населенном пункте?


  3. Сколько избирателей приняли участие в голосовании в каждом из населенных пунктов? В каких населенных пунктах первый и пятый кандидаты набрали больше 100 голосов?


  4. Кто из кандидатов имеет максимальный рейтинг? В каких населенных пунктах количество участников выборов не превысило 450?


  5. Кто из кандидатов набрал максимальное количество голосов во втором населенном пункте? У кого из кандидатов рейтинг больше некоторого заданного числа р?


  6. В каких населенных пунктах количество опрошенных больше некоторого заданного числа р? Какие кандидаты набрали минимальное количество голосов в каждом из населенных пунктов?


  7. За кого из кандидатов подано количество голосов меньше некоторого заданного числа р? Какие кандидаты набрали максимальное и минимальное количество голосов во втором и пятом населенных пунктах?


  8. В каких населенных пунктах первый кандидат набрал максимальное количество голосов? У кого из кандидатов наименьший рейтинг?


  9. В каком населенном пункте проголосовало наибольшее количество людей? У кого из кандидатов рейтинг превысил некоторое заданное число р?


  10. Кто из кандидатов набрал наибольшее количество голосов во втором и третьем населенных пунктах? В каких населенных пунктах третий кандидат набрал максимальное количество голосов?


  11. В каком населенном пункте первый кандидат набрал минимальное количество голосов, а в каком максимальное? Определить номера населенных пунктов, где количество поданных голосов превысило 150.

Для любопытных

Графические программы с применением массивов.

Рассмотрите приведенный ниже пример.

Задача. Нарисовать олимпийский флаг. Обеспечьте в программе ввод радиуса колец (R) и расположение флага на экране, задавая координаты его верхнего правого угла (Х, Y). Для хранения цветов колец использовать массив.

Program Flag;
Uses
  Graph;
Var
  ...
  U, V, X, Y, R, A, B, L, i : integer;
  Palitra : array [1..5] of integer;
Begin
  write('R=');
  readln (R);
  write('X=');
  readln (X);
  write('Y=');
  readln (Y);
  ...{Инициализация графического режима}
  Palitra [1] := LightBlue;
  Palitra [2] := Black;
  Palitra [3] := Red; {Задание цветов колец}
  Palitra [4] := Yellow;
  Palitra [5] := Green;
  A := 7*R;
  B := 5*R; {Вычисление размера флага}
  L := 2*R-round(R/4); {Вычисление расстояния между кольцами}
  SetFillStyle(1, 15);
  Bar (X, Y, X+A, Y+B); {Рисование белого флага}
  SetLineStyle(0, 1, 3);
  U := X+Round (1.75*R); {Координаты первого верхнего кольца}
  V := Y+L;
  for i := 1 to 5 do {Рисование пяти колец}
    begin
      if i=4
        Then
          Begin
            U := X+Round(2.65*R); {Координаты первого нижнего кольца}
            V := Y+3*R;
          End;
      SetColor(Pal[i]); {Задание цвета i-го кольца}
      Circle(U, V, R); {Рисование кольца}
      U := U+L; {Расположение следующего кольца}
    end;
  readln;
  CloseGraph;
End.

Выберите самостоятельно задачу из ниже предложенного перечня:

  1. Нарисовать радугу в нижней части экрана.


  2. Вывести разноцветные концентрические кольца с центром в середине экрана. Обеспечить диалоговый ввод последовательности меняющихся цветов колец и контроль выхода за границы экрана.


  3. Модифицировать задачу 2 для рисования разноцветных неконцентрических колец, цвета которых вводятся в диалоге.


  4. Нарисовать шахматную доску. Расставить шашечную позицию, которая запрашивается с экрана. Расположение шашки задается парой чисел: номером клетки по вертикали и по горизонтали.


  5. Нарисовать схему расположения городов, которые отмечаются на экране кружочками. Координаты городов предварительно вводятся с клавиатуры.


  6. Модифицировать предыдущую задачу, предполагая, что размер кружка зависит от численности населения города.


  7. Изобразить на экране движение шара по биллиардному столу с лузами. Расположить лузы по краям биллиардного стола, задав их координаты в диалоге. Движение шара прекращается при попадании его в лузу.


  8. Получить мультфильм "Круги на воде", используя концентрические окружности. Центры окружностей должны быть совмещены с центром экрана. Иллюзия движения создается последовательной сменой цветов всех окружностей, начиная с внутренней и кончая внешней. Обеспечить ввод максимального и минимального радиусов в диалоге, а также количество волн и последовательность сменяющихся цветов.


  9. Промоделировать работу светофора без учета дорожной обстановки. Обеспечить ввод временных интервалов смены цветов. Для обеспечения временной задержки используйте процедуру Delay.


  10. Нарисовать поле размером 10х10 для игры в "Морской бой". На нем с помощью датчика случайных чисел расставить 10 однопалубных кораблей, чтобы они не соприкасались друг с другом. Изобразить позицию на экране компьютера.
Вернуться назад
2003—2012 © Группа «Vimedia»
Проект «Pascaler» — лучший на ХI Всероссийской конференции молодых исследователей с международным участием «Шаг в будущее», Россия, Москва, 12 – 16 апреля 2004г.