Суммативная работа по информатике за 2 полугодие 8 класс 1. Определите вид алгоритма. Напишите правильный алгоритм перехода улицы.
Возвращаясь со школы, Алия подошла к перекрестку, регулируемому светофором. В уме она быстро составила алгоритм перехода улицы:
Остановиться;
Посмотреть на сигнал светофора;
Если (горит зеленый), то {дойти до середины; остановиться}
иначе {стоять;}
Посмотреть на сигнал светофора;
Если (горит зеленый), то {идти до конца;}
иначе {стоять;} /2
2. Исправьте этот алгоритм.
Проснувшись в понедельник утром, Артем почувствовал недомогание. Недолго думая, он составил для себя следующий алгоритм:
Измерить температуру;
Если (температура выше 37), то {вызвать врача;}
Пойти в школу; /1
3. Школьник в текстовом редакторе напечатал слово «телеграмма». Курсор находится после третьей буквы этого слова. Какое слово будет напечатано после выполнения следующего алгоритма:
Нажать клавишу «Стрелка вправо» 4 раза,
Если (курсор находится перед буквой «м»),
то (нажать на клавишу «Delete» 2 раза),
Если (курсор находится после буквы «а»),
то (заменить букву «а» на «ф»). /2
4. Напишите программу вычисления длины окружности и площади круга по величине радиуса круга. /3
5. Выполни тесты
1. Укажите свойства алгоритма.
a) Дискретность, результативность, понятность, точность, массовость, определенность.
b) Используемость, понятность, конечность, решаемость, выполняемость.
c) Определённость, конечность, массовость, точность, результативность, понятность.
d) Дискретность, решаемость, выполняемость, многопользовательность, конечность. /1
2. Укажите какая задача решается по данному алгоритму
алг Задача
вещ Х
нач ввод Х
если Х<0
то вывод «отрицательное число»
иначе вывод «положительное число»
кв
кон
a) Определить, является ли введенное число трехзначным.
b) Определить, является ли введенное число четным.
c) Определить, является ли введенное число положительным или отрицательным.
d) Определить, является ли введенное число двухзначным.
e) Определить, является ли введенное число нечетным. /1
3. Определите результат выполнения нижеследующего псевдокода, если n=10.
алг Сумма квадратов (арг цел n, рез цел S)
дано|n > 0
надо|S = 1*1+2*2+3*3+…+n*n
нач цел i
ввод n;S:=0
нц для i от 1 до n
S:=S+i*i
кц
вывод “S =”, S
кон
a) 127
b) 529
c) 225
d) 385
e) 789 /1
6. Дайте определение что такое псевдокод? /1
7. Построить трассировочную таблицу для алгоритма «Вычисление суммы чисел от 1 до 4»
Оператор Условие N S Примечание
/5
const
nMax = 50; { максимум 50 команд }
cGold = 7;
cSilver = 6;
cBronze = 5;
type
cName = string[20];
RC = record
position: byte;
name: cName;
nGold: byte;
nSilver: byte;
nBronze: byte;
cTotal: byte
end;
tM = array[1..nMax, 1..2] of byte;
procedure Shell(var a: tM; n: integer);
{ Сортировка методом Шелла массива a[1..n, 1..2]
по убыванию значений элементов второго столбца. }
var
i, j, step, t1, t2: integer;
begin
step := n div 2;
while step > 0 do
begin
for j := n - step downto 1 do
begin
i := j;
while i <= n - step do
begin
if a[i, 2] < a[i + step, 2] then
begin
t1 := a[i, 1]; t2 := a[i, 2];
a[i, 1] := a[i + 1, 1]; a[i, 2] := a[i + 1, 2];
a[i + 1, 1] := t1; a[i + 1, 2] := t2
end;
i := i + step
end
end;
step := step div 2
end
end;
{ Основная программа }
var
f: file of RC;
a: tM;
i, n: byte;
s: cName;
t: RC;
begin
{ Организуем ввод данных }
Assign(f, 'Olympic.in');
Rewrite(f);
n := 0;
repeat
Writeln('Введите наименование команды или * для окончания ввода');
Readln(s);
if s[1] <> '*' then
begin
n := n + 1;
Write('Количество медалей: золото, серебро, бронза: ');
Readln(t.nGold, t.nSilver, t.nBronze);
t.position := n;
t.name := s;
t.cTotal := t.nGold * cGold + t.nSilver * cSilver + t.nBronze * cBronze;
Write(f, t);
a[n, 1] := t.position; a[n, 2] := t.cTotal
end
until s[1] = '*';
Reset(f);
{ Выполняем сортировку заполненного массива a,
определяя положение записей в файле }
Shell(a, n);
{ Выводим результаты, используя прямой доступ к файлу }
Writeln('Результаты олимпиады');
for i := 1 to n do
begin
seek(f, a[i, 1] - 1);
Read(f, t);
Writeln(i, ': ', t.name, '(', t.nGold, ' зол, ', t.nSilver, ' сер, ',
t.nBronze, ' бронз), очков- ', t.cTotal)
end;
Close(f);
end.
Тестовое решение:
Введите наименование команды или * для окончания ввода
Веселые медузы
Количество медалей: золото, серебро, бронза: 4 6 10
Введите наименование команды или * для окончания ввода
Юные сурки
Количество медалей: золото, серебро, бронза: 2 0 5
Введите наименование команды или * для окончания ввода
Черепашки-ниндзя
Количество медалей: золото, серебро, бронза: 3 7 11
Введите наименование команды или * для окончания ввода
*
Результаты олимпиады
1: Черепашки-ниндзя(3 зол, 7 сер, 11 бронз), очков- 118
2: Веселые медузы(4 зол, 6 сер, 10 бронз), очков- 114
3: Юные сурки(2 зол, 0 сер, 5 бронз), очков- 39
A. КД * БС * ДД
Б. КД + БС + ДД
В. КД + БС * ДД
Г. БС * ДД
Сравнивать количества элементов множеств можно, используя трюк: количества элементов соотносятся точно также, как и записанные мною выше выражения, в которых вместо КД, БС, ДД записаны какие-то числа между нулем и единицей. Можно даже просто подставить, например, КД = БС = ДД = 0,1 и посмотреть, что получится.
А. 0,1 * 0,1 * 0,1 = 0,001
Б. 0,1 + 0,1 + 0,1 = 0,3
В. 0,1 + 0,1 * 0,1 = 0,11
Г. 0,1 * 0,1 = 0,01
Б > В > Г > А
Для справедливости всего, что написано, в каждом выражении каждая переменная должна встречаться не более, чем по одному разу.
Трюком можно пользоваться, если известно, что при любых значениях переменных порядок не будет меняться (это условие эквивалентно тому , что задача при любых количествах элементов и любых соотношениях будет разрешима, и ответ не меняется)
Например, рассмотрим пример, который явно не определен однозначно: сравним количество результатов по запросу (A. Конан Дойл & Г. Бичер-Стоу) и (Г. Бичер-Стоу & Джером К. Джером). Следуя методу, надо сравнить при всех возможных 0 < КД, БС, ДД < 1 выражения:
КД * БС и БС * ДД
При разных выборах значений результат будет разным, например:
- КД = БС = 0,1; ДД = 0,2: 0,01 < 0.02
- КД = БС = ДД = 0,1: 0,01 = 0,01
- КД = 0,2; БС = ДД = 0,1: 0,02 > 0.01
Это означает, что без дополнительных условий задача не разрешима.