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 Зеэв