תורגבה ןחבמ לש תיסורל םוגרת םכינפל 'א בשחמה יעדמב 899222

advertisement
899222 , ‫ קיץ תשס"ב‬,'‫מדעי המחשב א‬
2002 год, базовый уровень (2 первых «учебных единицы» из 5)
‫לפניכם תרגום לרוסית של מבחן הבגרות‬
‫ מקיץ תשס"ב‬899222 '‫במדעי המחשב א‬
.‫המבחן תורגם ע"י יבגני קנל מתיכון עירוני א' אשקלון‬
Часть 1
Необходимо ответить на все вопросы 1-5. Каждый вопрос – 10 баллов.
Задача 1.
Дан алгоритм:
(1) Присвоить переменной Count значение 0
(2) Для I от 1 до 5 делать:
(2.1) Ввести число для переменной Number
(2.2) Если Number≤10, то
(2.2.1) увеличить значение Count на 1
(3) Вывести значение Count
А. Что выведет алгоритм, если ввод для следующего ввода:
8, 15, 10, -2, 1 ?
Необходимо использовать таблицу трассировки.
Б. Объясните – какова общая цель алгоритма.
Задача 2.
Напишите программу, которая генерирует 57 пар случайных чисел из диапазона
1..18 (включая крайние значения) и показывает для каждой пары большее число
из двух. Для пары, образованной равными по значению числами – показать одно
из них.
Задача 3.
Перед Вами часть программы:
Текст программы на языке PASCAL
READ(X, Y);
IF (X>Y) AND (Y>12)
THEN WRITE(‘Истина’)
ELSE WRITE(‘Ложь’);
Текст программы на языке C
Scanf(“%d%d”,&x,&y);
If ((x>y) && (y>12)
Printf(“Истина”);
Else
Printf(“Ложь”);
А. Выберите такие значения для X и Y, чтобы выводилось сообщение Истина.
Объясните свой выбор.
Б. Выберите такие значения для X и Y, чтобы выводилось сообщение Ложь.
Объясните свой выбор.
Д-р Евгений Канель
Фрайман
18/1/16
Зеэв
899222 , ‫ קיץ תשס"ב‬,'‫מדעי המחשב א‬
2002 год, базовый уровень (2 первых «учебных единицы» из 5)
Задача 4.
Перед Вами отрывок программы:
Текст программы на языке PASCAL
Текст программы на языке C
FOR I:=1 TO (N-2) DO
IF A[I]+2=A[I+2] THEN
WRITE(I, A[I]);
For (I=0; I<n-2; I++)
If (a[I]+2= =a[I+2])
Printf(“%d%d”,I,a[I]);
А. Дан массив
а
3
18 5
a размером 10 ячеек:
20 2
4
5
6
1
9
Каким будет вывод программы для n=10 и данного массива. Необходимо
использовать программу трассировки.
Б. Объясните, почему в программе верхняя граница цикла указана как n-2.
Задача 5.
Дан заголовок функции:
Function how_many (num, dig : integer) : integer; (на языке PASCAL)
Int how_many (int num, int dig) (на языке С)
Входные параметры: функция получает 2 параметра, num и dig, причем num –
двузначное положительное число, а dig – цифра из диапазона 0..9.
Результат: функция возвращает число появлений dig в num.
А. Укажите две пары параметров так, чтобы для каждой пары функция
возвращала иное значение.
Б. Напишите тело функции.
Часть 2
Необходимо ответить на 2 вопроса из вопросов 6-8.
Каждый вопрос – 15 баллов.
Задача 6.
Напишите программу, принимающую в качестве ввода серию положительных
целых чисел. Ввод прекращается после введения 10 четных чисел. Программа
должна распечатывать (показывать в качестве вывода) все четные числа из
вводимой серии; кроме того, программа выводит общее число введенных
значений.
Д-р Евгений Канель
Фрайман
18/1/16
Зеэв
899222 , ‫ קיץ תשס"ב‬,'‫מדעי המחשב א‬
2002 год, базовый уровень (2 первых «учебных единицы» из 5)
Примечание: допустимо предположить, что все вводимые числа
соответствуют требованию задачи.
Задача 7.
Десятиклассники приняли участие в мероприятии по сбору двух видов отходов
(для последующей переработки): пластиковых бутылок и использованных
батареек.
В двух десятых классах школы учатся 68 учеников. Решено в рамках
мероприятия провести соревнование между этими двумя классами. Подсчет
баллов было решено провести по следующей системе: за каждую
пластмассовую бутылку начислять 3 балла, за батарейку – 7 баллов.
Победителем признается класс, ученики которого получили в сумме большее
число баллов.
Напишите программу, вводом для которой будут следующие данные: для
каждого ученика – класс, в котором он учится, число бутылок и число батареек,
которые он собрал. Программа должна подсчитать число баллов для каждого
класса и указать в качестве вывода класс-победитель; в случае ничьей
программа должна распечатать текстовое сообщение НИЧЬЯ.
Примечание: допустимо предположить, что все вводимые числа
соответствуют требованию задачи.
Задача 8.
Перед Вами функция, написанная на языке Паскаль и С.
Входные параметры: массив vec размером в 7 ячеек, содержащий целые числа, и
целое число m из диапазона 2..5.
Результат: функция должна возвращать разницу между средним m первых
ячеек массива и средним остальных его ячеек.
Функция НЕ ДОСТИГАЕТ своей цели.
Текст функции на языке PASCAL
Текст функции на языке С
Описание:
Type vec=array[1..7] og integer;
Описание:
Typedef int vec[7];
Function diff(a: vec; m: integer):real;
Var
I:integer;
Sum, avg1, avg2:real;
Begin
Sum:=0;
For I:=1 to m do
Sum:=sum+a[I];
Avg1:=sum/m;
Sum:=0;
For I:=m to 7 do
Sum:=sum+a[I];
Avg2:=sum/(7-m);
Diff:=avg1-avg2;
Float diff(vec a, int m)
Int I;
Float sum, avg1, avg2;
Sum=0;
For (I=0; I<=m-1; I++)
Sum=sum+a[I];
Avg1:=sum/m;
Sum:=0;
For (I:=m-1;I<7; I++)
Sum:=sum+a[I];
Avg2:=sum/(7-m);
Return(avg1-avg2);
Д-р Евгений Канель
Фрайман
18/1/16
Зеэв
899222 , ‫ קיץ תשס"ב‬,'‫מדעי המחשב א‬
2002 год, базовый уровень (2 первых «учебных единицы» из 5)
End;
А. Дан массив а:
а
1
3
2
4
6
0
4
Проследите за исполнением функции diff для m=3 и данного массива а с
помощью таблицы трассировки.
Б. Измените одну из команд так, чтобы функция работала правильно.
Объясните сделанное изменение.
Часть 3 (20 баллов)
Необходимо ответить на 1 вопрос из вопросов 9-10.
Задача 9.
А.
Дан массив размером 20 ячеек, содержащий целые числа. Известно, что
все элементы массива различны. Напишите подпрограмму (функцию или
процедуру – по выбору), которая принимает в качестве параметров данный
массив и целое число m – и проверяет, находится ли m в массиве. В случае,
если m действительно находится в массиве, подпрограмма должна
возвращать число элементов массива, меньших m и находящихся перед m (в
«начальной части» массива). В случае, если m не находится в массиве,
подпрограмма должна вернуть число элементов, меньших m во всем массиве.
Б.
Напишите программу, вводящую с клавиатуры 20 значений (для ячеек
массива) и затем еще 10 дополнительных чисел. Программа должна
передавать массив и каждое из 10 дополнительных чисел в качестве
параметров в подпрограмму, написанную в предыдущем разделе задачи.
Примечание: предположите, что все вводимые числа соответствуют
требованию задачи.
С.
Предположим, что написанная подпрограмма возвращает 0.
Что в этом случае можно сказать о значении m? Обоснуйте свой ответ.
Что можно сказать о значении m, если подпрограмма возвратила 20?
Д.
Известно, что массив отсортирован в возрастающем порядке и
подпрограмма возвратила 20. Добавьте в подпрограмму команду, которая для
подобных случаев исключает необходимость просмотра всего массива.
Задача 10.
А. Напишите подпрограмму (функцию или процедуру – по выбору), которая
принимает в качестве параметра целое положительное число mis.
Подпрограмма должна проверить, существуют ли два целых положительных
числа, произведение которых равно mis и разница между которыми равна 3.
Если такая пара чисел действительно существует, подпрограмма возвращает
меньшее из них, если нет – подпрограмма возвращает 0.
Д-р Евгений Канель
Фрайман
18/1/16
Зеэв
899222 , ‫ קיץ תשס"ב‬,'‫מדעי המחשב א‬
2002 год, базовый уровень (2 первых «учебных единицы» из 5)
Б. Напишите алгоритм, который принимает в качестве ввода 83 целых числа из
диапазона 1..100; для каждого из введенных чисел алгоритм вызывает
подпрограмму, написанную в разделе А. Алгоритм должен печатать в
качестве конечного результата (вывода) сообщение «ДА», если среди
значений, возвращенных подпрограммой, были все числа от 1 до 10 – в ином
случае алгоритм должен печатать в качестве конечного результата (вывода)
сообщение «НЕТ».
1) Выберете основные переменные, опишите их типы и укажите
их назначение.
2) Разделите задачу на подзадачи и сформулируйте их цели.
В. Напиши программу для реализации алгоритма.
Примечание: допустимо предположить, что все вводимые числа
соответствуют требованию задачи.
Д-р Евгений Канель
Фрайман
18/1/16
Зеэв
Download