| Экзамен-2006: сегодня и на будущее (часть 1-я) |
|
|
Sunday, 21 May 2006 | Зэев Фрайман, д-р Евгений Канель для раздела Ученье – свет 17 мая прошли у нас в Израиле экзамены на аттестат зрелости по предмету «основы компьютерных наук» – по всем уровням. Сегодня мы предложим вам част заданий – и, как всегда, возможные варианты решений, но не на «привычном» PASCALе, как это пока еще и в этом году делали наши ученики, а на Java. Все это, разумеется, в рамках готовящегося перехода на преподавание нашего предмета с использованием уже не PASCALя, а именно Java.В этом материале – базисный вариант, который у нас определяют как «две учебных единицы (вторая и третья) из пяти возможных». Часть задач требует умения разобраться с блоками программ; в этом году, естественно, они по-прежнему были на PASCALе, но мы, с перспективой на будущее, приводим их в Java-варианте.
Задача №1
Дан блок программы:
int k = 1;
int num = 0;
for (int i=1; i<=4; i++) {
int x = IO.readInt();
if (x 5 2 == 0) num = (num*10)+x;
else { k = k*10; num = num + (z*k); };
}
IO.writeln( num );
Построй таблицу ручной прокрутки и укажи, что будет напечатано в качестве вывода, если в качестве ввода были использованы следующие данные: 2, 1, 3, 6
Задача №2
Дан алгоритм:
(1) ввести число для переменной x
(2) ввести число для переменной y
(3) до тех пор, пока x>0, исполнять
(3.1) x Я (x – y)
(4) напечатать значение х
Задача №3
Дан одномерный массив из 62-х ячеек, содержащий целые положительные числа. Напиши программный блок, который:
(1) подсчитает сумму всех трехзначных чисел в массиве и распечатает ее;
(2) подсчитает число трехзначных чисел, больших 248, содержащихся в массиве, и распечатает результат.
final int n=62,border=248;
int m[]=new int[n];
int i,sum=0,count=0;
for (i=0;i
if ((m[i]99)) sum=sum+m[i];
if ((m[i]border)) count++;
}
IO.writeln(sum+" "+count);
Задача №4
Дан блок программы:
int num = IO.readInt();
int sum = 0;
int count = 0;
while (num > 0) {
sum = sum +num;
count++;
num = IO.readInt();
}
Io.writeln ( sum / num );
Блок должен принять в качестве ввода серию положительных чисел и напечатать их среднее арифметическое. Можно исходить из предположения, что будет введено как минимум одно положительное число. Ввод чисел будет завершен с вводом нуля или отрицательного числа.
Блок содержит ошибку и не выполняет требуемого в условии. Укажи эту ошибку и исправь ее.
Задача №5
Дан метод:
static int check (int a,b ) {
if ( (b-a) > 5 ) return 1;
else return 0;
}
Даны три программных блока, каждый из которых обращается к указанному выше методу. Следует проверить верность написания каждого из этих блоков; если он верен – указать, что будет напечатано в качестве вывода, если он неверен – объяснить, в чем ошибка.
(I) int x = check(6, 2); IO.writeln (x);
(II) int a=2; int b=8; IO.writeln(check);
(III) int m=7; for (i=1; i<4; i++) IO.writeln( check(I, m));
|