Содержание
1. Постановка задачи
2. Описание программных модулей, реализованных в тестирующей системе
3. Исходный текст тестов
4. Инструкция пользователю
1. Постановка задачи
Создать тестирующую программу по дисциплине «Основы алгоритмизации» на тему «Язык программирования Pascal. Операторы, процедуры и функции, типы данных», используя прикладную программу MSExcel.
2. Описание программных модулей, реализованных в тестирующей системе
Процедура обработки ответов на Вариант 1
Private Sub CommandButton1_Click()
‘Проверка ответов
If CheckBox1.Value = False Then k = k + 1
If CheckBox2.Value = True Then k = k + 1
If CheckBox3.Value = False Then k = k + 1
If CheckBox4.Value = False Then k = k + 1
If (CheckBox6.Value = True) And (CheckBox5.Value = False) _
And (CheckBox7.Value = False) Then k = k + 1
If (CheckBox8.Value = True) And (CheckBox10.Value = False) And _
(CheckBox9.Value = True) Then k = k + 2
If ((CheckBox8.Value = True) Or (CheckBox9.Value = True)) And _
(CheckBox10.Value = False) Then k = k + 1
If (CheckBox12.Value = True) And (CheckBox11.Value = False) And _
(CheckBox13.Value = False) Then k = k + 1
If (CheckBox14.Value = True) And (CheckBox15.Value = False) And _
(CheckBox16.Value = False) Then k = k + 1
If (CheckBox17.Value = True) And (CheckBox18.Value = False) And _
(CheckBox19.Value = False) Then k = k + 1
If (CheckBox21.Value = True) And (CheckBox22.Value = True) And _
(CheckBox18.Value = False) Then k = k + 2
If ((CheckBox21.Value = True) Or (CheckBox22.Value = True)) And _
(CheckBox18.Value = False) Then k = k + 1
If (CheckBox25.Value = True) And (CheckBox23.Value = False) And _
(CheckBox24.Value = False) Then k = k + 1
If (CheckBox27.Value = True) And (CheckBox26.Value = False) And _
(CheckBox28.Value = False) Then k = k + 1
If (CheckBox31.Value = True) And (CheckBox29.Value = False) And _
(CheckBox30.Value = False) Then k = k + 1
If (CheckBox32.Value = True) And (CheckBox33.Value = False) And _
(CheckBox34.Value = False) Then k = k + 1
‘Подсчёт количества правильных и неправильных ответов
‘Выставление оценки
Sheets("Титульный").Range("E13").Value = k
Sheets("Титульный ").Range("E12").Value = 16 - k
If (k If (k >= 8) And (k If (k >= 11) And (k If (k >= 15) Then Sheets("Титульный ").Range("E14").Value = "Отлично"
‘Переход на титульный лист
Sheets("Титульный ").Visible = True
Sheets("Титульный ").Select
Sheets("Вариант2").Visible = False
Sheets("Вариант 1").Visible = False
Sheets("Вариант 3").Visible = False
‘Сохранение (копирование) документа в папку C:\TEMP с номером варианта
ActiveWorkbook.SaveCopyAs "C:\TEMP\Тест пройден Вариант 1.XLS"
End Sub
Процедура обработки ответов на Вариант 2
Private Sub CommandButton1_Click()
‘Проверка ответов
If CheckBox1.Value = False Then k = k + 1
If CheckBox2.Value = True Then k = k + 1
If CheckBox3.Value = True Then k = k + 1
If CheckBox4.Value = True Then k = k + 1
If CheckBox5.Value = True Then k = k + 1
If CheckBox6.Value = True Then k = k + 1
If CheckBox7.Value = False Then k = k + 1
If (CheckBox9.Value = True) And (CheckBox8.Value = False) _
And (CheckBox10.Value = False) Then k = k + 1
If (CheckBox13.Value = True) And (CheckBox12.Value = False) And _
(CheckBox11.Value = False) Then k = k + 1
If (CheckBox16.Value = True) And (CheckBox15.Value = False) And _
(CheckBox14.Value = False) Then k = k + 1
If (CheckBox18.Value = True) And (CheckBox17.Value = False) And _
(CheckBox19.Value = False) Then k = k + 1
If (CheckBox21.Value = True) And (CheckBox20.Value = False) And _
(CheckBox22.Value = False) Then k = k + 1
If (CheckBox25.Value = True) And (CheckBox24.Value = False) And _
(CheckBox23.Value = False) Then k = k + 1
If (CheckBox26.Value = True) And (CheckBox27.Value = False) And _
(CheckBox28.Value = False) Then k = k + 1
If (CheckBox30.Value = True) And (CheckBox29.Value = False) And _
(CheckBox31.Value = False) And (CheckBox32.Value = False) Then k = k + 1
If (CheckBox35.Value = True) And (CheckBox33.Value = False) And _
(CheckBox34.Value = False) And (CheckBox36.Value = False) Then k = k + 1
If (CheckBox40.Value = True) And (CheckBox37.Value = False) And _
(CheckBox38.Value = False) And (CheckBox39.Value = False) Then k = k + 1
If (CheckBox41.Value = True) And (CheckBox42.Value = False) And _
(CheckBox43.Value = False) And (CheckBox44.Value = False) Then k = k + 1
‘Подсчёт количества правильных и неправильных ответов
‘Выставление оценки
Sheets("Титульный ").Range("E11").Value = k
Sheets("Титульный ").Range("E12").Value = 18 - k
If (k If (k >= 6) And (k If (k >= 12) And (k If (k >= 17) Then Sheets("Титульный ").Range("E14").Value = " Отлично "
‘Переход на титульный лист
Sheets("Титульный ").Visible = True
Sheets("Титульный ").Select
Sheets("Вариант 2").Visible = False
Sheets("Вариант 1").Visible = False
Sheets("Вариант 3").Visible = False
‘Сохранение (копирование) документа в папку C:\TEMP с номером варианта
ActiveWorkbook.SaveCopyAs "C:\TEMP\ Тест пройден Вариант 2.XLS"
End Sub
Процедура обработки ответов на Вариант 3
‘Проверка ответов
Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then k = k + 1
If CheckBox2.Value = True Then k = k + 1
If CheckBox3.Value = True Then k = k + 1
If CheckBox4.Value = False Then k = k + 1
If CheckBox5.Value = False Then k = k + 1
If CheckBox6.Value = True Then k = k + 1
If CheckBox7.Value = True Then k = k + 1
If CheckBox8.Value = True Then k = k + 1
If CheckBox9.Value = False Then k = k + 1
If CheckBox10.Value = True Then k = k + 1
If CheckBox11.Value = False Then k = k + 1
If CheckBox12.Value = False Then k = k + 1
If (CheckBox14.Value = True) And (CheckBox13.Value = False) _
And (CheckBox15.Value = False) Then k = k + 1
If (CheckBox18.Value = True) And (CheckBox17.Value = False) And _
(CheckBox16.Value = False) Then k = k + 1
If (CheckBox20.Value = True) And (CheckBox19.Value = False) And _
(CheckBox21.Value = False) Then k = k + 1
If (CheckBox22.Value = True) And (CheckBox23.Value = False) And _
(CheckBox24.Value = True) Then k = k + 2
If ((CheckBox22.Value = True) Or (CheckBox23.Value = True)) And _
(CheckBox24.Value = False) Then k = k + 1
If (CheckBox26.Value = True) And (CheckBox27.Value = True) And _
(CheckBox25.Value = False) Then k = k + 2
If ((CheckBox26.Value = True) Or (CheckBox27.Value = True)) And _
(CheckBox25.Value = False) Then k = k + 1
If (CheckBox30.Value = True) And (CheckBox29.Value = False) And _
(CheckBox31.Value = False) And (CheckBox28.Value = False) Then k = k + 1
If (CheckBox35.Value = True) And (CheckBox33.Value = False) And _
(CheckBox34.Value = False) And (CheckBox32.Value = False) Then k = k + 1
If (CheckBox37.Value = True) And (CheckBox36.Value = False) And _
(CheckBox38.Value = False) And (CheckBox39.Value = False) Then k = k + 1
If (CheckBox40.Value = True) And (CheckBox41.Value = False) And _
(CheckBox43.Value = False) And (CheckBox42.Value = False) Then k = k + 1
If (CheckBox46.Value = True) And (CheckBox45.Value = False) And _
(CheckBox44.Value = False) And (CheckBox47.Value = False) Then k = k + 1
If (CheckBox48.Value = True) And (CheckBox49.Value = False) And _
(CheckBox50.Value = False) And (CheckBox51.Value = False) Then k = k + 1
If (CheckBox55.Value = True) And (CheckBox54.Value = False) And _
(CheckBox53.Value = False) And (CheckBox52.Value = False) Then k = k + 1
If (CheckBox57.Value = True) And (CheckBox56.Value = False) And _
(CheckBox58.Value = False) And (CheckBox59.Value = False) Then k = k + 1
‘Подсчёт количества правильных и неправильных ответов
‘Выставление оценки
Sheets("Титульный ").Range("E13").Value = k
Sheets("Титульный ").Range("E12").Value = 27 - k
If (k If (k >= 13) And (k If (k >= 19) And (k If (k >= 25) Then Sheets("Титульный ").Range("E14").Value = " Отлично "
‘Переход на титульный лист
Sheets("Титульный ").Visible = True
Sheets("Титульный ").Select
Sheets("Вариант 2").Visible = False
Sheets("Вариант 1").Visible = False
Sheets("Вариант 3").Visible = False
‘Сохранение (копирование) документа в папку C:\TEMP с номером варианта
ActiveWorkbook.SaveCopyAs "C:\TEMP\ Тест пройден Вариант 3.XLS"
End Sub
Процедура начала теста. Выбор варианта.
Private Sub CommandButton1_Click()
‘Запрос на введение фамилии, имени и группы
Application.Cells(8, 3) = InputBox("Введите фамилию", "Фамилия")
Application.Cells(9, 3) = InputBox("Введите имя", "Имя")
Application.Cells(10, 3) = InputBox("Введите группу", "Группа")
‘По счётчику случайных чисел выбор варианта теста
s = Int(Rnd() * 3 + 1)
Select Case s
Case Is = 1
Sheets("Вариант 1").Visible = True
Sheets("Вариант 1").Select
Sheets("Титульный ").Visible = False
Sheets("Вариант 2").Visible = False
Sheets("Вариант 3").Visible = False
Case Is = 2
Sheets("Вариант 2").Visible = True
Sheets("Вариант 2").Select
Sheets("Титульный ").Visible = False
Sheets("Вариант 1").Visible = False
Sheets("Вариант 3").Visible = False
Case Is = 3
Sheets("Вариант 3").Visible = True
Sheets("Вариант 3").Select
Sheets("Титульный ").Visible = False
Sheets("Вариант 2").Visible = False
Sheets("Вариант 1").Visible = False
End Select
End Sub
3. Исходный текст тестов
Операторы
Истина или ложь?
Каждое утверждение либо верно, либо нет.
1. Составной оператор представляет собой никак не обозначенную последовательность некоторых операторов.
2. Оператор перехода предназначен для передачи управления в другую точку программы.
3. В Turbo Pascal предусмотрен единственный условный оператор — IF.
4. Операторы REPEAT и WHILE образуют в Turbo Pascal группу операторов цикла.
Найти верный ответ
Каждый из предложенных вопросов может иметь несколько правильных ответов.
5. Какой из следующих составных операторов соответствует правилам Turbo Pascal? a) end
a:=b+c;
a:=a/2;
Write(a)
begin;
б) begin
a:=b+c;
a:=a/2;
Write(a)
end;
в) begin;
a:=b+c;
a:=a/2;
Write(a)
end
6. Который из следующих условных операторов IF корректен? a) ifx>y thenz:=x/2 elsez:=у+2;
б) if a and b>c then d:=c+b;
в) if x>0 else x:=Sqrt(x) then x:=Sqr(x);
7. Какой из следующих условных операторов CASE свободен от ошибок?
a) case x
l:Write('пн')
2:Write('вт')
3:Write('ср')
4:Write('чт')
5:Write('пт')
6:Write('сб')
7:Write('bc')
б) case х of
l:Write('пн')
2:Write('вт')
3:Write('cp')
4:Write('чт')
5:Write('пт')
6:Write('сб')
7:Write('вс')
end;
в) case x of
1; Write('пн')
2; Write ('вт')
3; Write('cp')
4; Write( 'чт')
5;Write('пт' )
6; Write( 'сб')
7 ;Write('вс')
end;
8. Который из следующих операторов цикла WHILE корректен?
а) while ado a:=a*2;
б) while aelse a:=a*3;
в) while athen a:=a*4;
9. Какой из следующих операторов цикла REPEAT соответствует правилам Turbo Pascal?
А) repeat
WriteLn(a);
а:=а*3
until a>=300;
б) repeat
begin
WriteLn(a);
a:=a*3
end
until a>=300;
в) repeat
WriteLn(a);
а:=а*3
whilea>=300;
10. Который из следующих операторов цикла FOR свободен от ошибок?
а) for i:=l goto 5 do x:=Sqr(x);
б) for i:=l to 5 do x:=Sqr(x);
в) for i:=z downto a do Write (i) ;
11. Могут ли в программе присутствовать следующие разделы описания меток?
а) label 1,2.3,new;
б) label 0,99999;
в)label1,2,3,new;
Найти соответствие
12. Для каждого перечня укажите соответствующее определение.
а)PROGRAM, VAR, CONST, BEGIN, END 1. Имена подпрограмм
б)Real, Integer, Boolean, Char 2. Зарезервированные слова
в)Write, Read, WriteLn, Sqr, Sqrt 3. Типы данных
Процедуры и функции
Истина или ложь?
Каждое утверждение либо верно, либо нет.
1. Вложение подпрограмм не допускается.
2. После раздела описаний процедуры следует ее тело, содержащее последовательность операторов, заключенных в операторные скобки.
3. Передача информации из тела программы в процедуру осуществляется с помощью механизма параметров.
4. Имена, объявленные в основной программе, доступны во всех описанных в ней подпрограммах.
5. Параметр-значение просто передает некоторое значение в подпрограмму.
6. Передача значений из процедуры в программу осуществляется с помощью параметров-переменных.
7. В Turbo Pascal наличие в теле подпрограммы оператора вызова самой себя не допускается.
Найти верный ответ
Каждый из предложенных вопросов может иметь несколько правильных ответов.
8. Какое из следующих описаний процедуры, выводящей строку символов (*),свободно от ошибок?
А) procedure Stars;
var s:integer;
begin
for s:=1 to 78 do
WriteLn('*')
end;
б) procedure Stars;
var s:integer;
begin
for s:=1 to 78 do
Write('*')
end;
в) procedure Stars;
var s:integer;
for s:=1 to 78 do
Write('*')
9. Какое из следующих описаний функции Power, вычисляющей степеньчисла, не содержит ошибок?
А) function Power
(n,p:integer);
var i, a: integer;
begin
a:=n;
for i:=l top do
a:=a*n;
Power:=a
end;
б) function Power
(n,p: integer):integer;
var i, a: integer;
begin
a:=n;
for i:=l to p do
a:=a*n;
end;
в)function Power
(n,p: integer) : integer,
var i, a: integer;
begin
a:=n;
for i:=l to p do
a:=a*n;
Power:=n
end
10. Какое из представленных ниже обращений к функции Power корректно?
а) Power(3,4);
б) x:=Power(5; var 3);
в) x:=Power(2,3);
11. На какой из следующих трех схем подпрограмма «видит» переменные m и n, и «не видит» k и l?
А) Program A
Var x,y,z
Б) Program A
Var x,y,z
в) Program A
Var x,y,z
Найти соответствие
12. Для следующей процедуры укажите соответствие между представленными ниже тремя вызовами этой процедуры и тремя вариантами вывода на экран.
Procedure proc1(x,y:integer);
Var i,j: integer;
begin
j:=x;
for i:=l to у do j:=j*x;
WriteLn('результат: ',j)
end; a)proc1(2,5) ; б)procl(5,2) ;
в) proc1(3,3);
1. результат: 27
2. результат: 32
3. результат: 25
13. Ниже представлены заголовки процедуры и функции, а также обращения к процедуре и функции.
procedure proc1 (x,y:integer; var z:real);
function funс1 (a,b: integer);
proc1(k,l,m);
h:=func1(i,j);
Укажите соответствие между представленными ниже наборами параметров этих подпрограмм (слева) и названиями разновидностей параметров (справа)
а)х,у,а,b 1. Параметры- переменные
2. Параметры-значения
6)x,y,z,a,b 3. формальные параметры
B)k,l,m,i,j 4 фактические параметры
г) z
Типы данных
Истина или ложь?
каждое утверждение либо верно, либо нет
1. Все данные, которыми манипулируют программы, написанные на Turbo Pascal обязательно должны принадлежать том> или иному типу.
2. В одном выражении могут присутствовать переменные как одного, так и разных вещественных типов
3. Если в записи числа использована точка, то оно вещественное, если точки нет — число целое
4. Операции сравнения над значениями типа Сhar не допускаютcя
5. Операции сравнения над значениями перечислимого типа не допускаются
6. Строка цифр, например '12345', не имеет ничего общего с числами и над ней нельзя производить арифметических действий.
7. Обратиться к отдельному символу строки можно, указав имя строковой переменной, а также порядковый номер символа в строке.
8. Для определения массива достаточно указать его базовый тип, а также число элементов в массиве и метод их нумерации.
9. Turbo Pascal допускает существование только двухмерных массивов
10. Количество полей в записи фиксированно и определяется описанием записи.
11 Имена полей в пределах записи могут повторяются
12. B множестве порядок элементов фиксирован
Найти верный ответ
Каждый из предложенных вопросов может иметьнесколько правильных ответов.
13 Программа вычисляет заданную степень (а — не более 10) заданного вещественного числа (к). Если степень больше, выводится слово "Больше". Какой из следующих вариантов программы не имеет ошибок? а) var
a,i,k:integer;
c:real;
begin
Read(c);
Read(a);
k:=c;
if athen
begin
for i:=l to a do
k:=k*c;
WriteLn(k)
end
else
WriteLn('Больше ')
end.
Б) var
a,i:integer;
c,k:real;
begin
Read(c);
Read(a);
k:=c;
if athen
begin
for i:=l to a do
k:=k*c;
WriteLn(k)
end
else
WriteLn('Больше')
end.
В) var
i:integer;
a,c,k:real;
begin
Read(c);
Read(a);
k:=c;
if a
begin
for i:=l to a do
k:=k*c;
WriteLn(k)
End
Else
WriteLn('Больше')
end.
14. Программа подсчитывает в последовательности вводимых значений типа Char количество символов ‘У’. Счет ведется, пока в последовательности не встретится символ '|' (вертикальная черта). Определите, какой из трех вариантов программы соответствует правилам Turbo Pascal.
a) var
а: char;
b: integer;
begin
Read('a');
b:=0;
while a'|' do
begin
if a='Y'
then b:=b+l;
Read('a');
end;
Write(b)
end.
Б) var
а: char;
b:integer;
begin
Read(a);
b:=0;
while a| do
begin
if а=У
then b:=b+l;
Read(a);
end;
Write(b)
end.
В) var
а : char ;
b:integer;
begin
Read(a);
b:=0;
while a'|' do
begin
if a='Y'
then b:=b+l;
Read(a);
end;
Write(b) end.
15. Программа выводит на экран таблицу истинности для выражения а or b and c. Определите, какой из вариантов корректен.
а) var
a,b,c,d:boolean; f,t:boolean;
begin
f:=false;
t:=true;
for a:=t to f do for b:=t to f do for c:=t to f do begin
d: =a or b and с ; Write(' A=',a); Write(' B=',b);
Write(' C=',c);
Write(' D=',d): WriteLn
end
16. Какие из следующих описаний многомерного массива не содержат ошибок?
а) x=array [1 3] of array [1 2] of integer;
б) x=array [ 1 3, 1 2] of integer;
в) x=array [1 3]x[1 2] of integer;
17. Какие из следующих описаний множеств корректны?
а) a3=set of integer;
б) a3=set of boolean;
в) a3=set of char;
end.
б) var
a,b,c,d:boolean;
f, t:boolean;
begin
f:=false;
t:=true;
for a: = f to t do
for b:=f to t do
for c:=f to t do
begin
d:=a or b and с ;
Write(' A=' ,a) ;
Write(' B=',b);
Write(' C=',c);
Write(' D=',d):
WriteLn
end
end.
в) var
a,b,c,d:boolean;
f, t: boolean; begin
f :=false;
t:=true;
for a:=f to t do for b:=f to t do for c:=f to t do d:=a or b and c; begin
Write(' A=',a); Write(' B=',b); Write(' C=',C); Write(' D=',d); WriteLn
end
end.
Найти соответствие
18.Для каждой группы значений (слева) выберите соответствующее определение (справа).
а) 'А', '1','%','щ',' (‘,')','*' 1. Вещественные
6) TRUE, FALSE
в)1, 22, -2, 9999, -123
г) 1.111, 3.14, 5.0, 18.4
2. Целочисленные
3. Символьные
4. Логические
19. Для следующих специальных операций деления, применимых к целочисленным значениям, укажите соответствующие результаты.
а) 63 mod 8 1. =8
б) 50 div 6 2. =6
в) 39 mod 10 3. =7
г) 33 div 5 4. =9
Гл 2. Операторы Неверно Верно неверно неверно 6 а, б б а а б, в в а –2, б – 3, в – 1
Гл.3. Процедуры и функции неверно верно верно верно верно верно неверно б в в б а – 2, б – 3, в – 1 а – 2, б – 3, в – 4, г – 1
Гл. 4. Типы данных верно верно верно неверно неверно верно верно верно неверно верно неверно неверно б в б а, б б, в а –3, б – 4, в – 2, г – 1 а – 3, б – 1, в – 4, г – 2
4. Инструкция пользователю
Данная тестирующая система проверяет знания по дисциплине «Основы алгоритмизации». Для того, чтобы пройти тест, следует открыть шаблон MSExcel «Тест по алгоритмизации» и нажать кнопку «Начать тест». Далее введите свою Фамилию, Имя и группу в появившиеся диалоговые окна. Тест сам автоматически выберет для вас один из трёх вариантов. С помощью мыши отметьте те варианты ответов, какие вы считаете правильными. Вопрос может иметь несколько ответов. После того, как вы закончили отвечать на вопросы, нажмите на кнопку «Получить оценку». Будет выставлена объективная оценка знаний, с указанием количества верных и неверных ответов. Тест автоматически сохраняется в папку C:\TEMP\ с именем, содержащим номер варианта.