Дополнительное задание 2 Параграф 27 ГДЗ Семакин 8 класс (Информатика)

Решение #1

Изображение ЕК ЦОР: Часть2, глава 6, §39. ЦОР № 13, 14, 15Практическое задание №23Тема: Использование циклов в вычислительных алгоритмах1 уровень сложности1. Разработать...
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Дополнительное изображение
Загрузка...

Рассмотрим вариант решения задания из учебника Семакин, Залогова 8 класс, Просвещение:
ЕК ЦОР: Часть2, глава 6, §39. ЦОР № 13, 14, 15
Практическое задание №23
Тема: Использование циклов в вычислительных алгоритмах
1 уровень сложности
1. Разработать схему алгоритма, который запрашивает N произвольных целых чисел и ищет их сумму. Число N вводится с клавиатуры. Разработать для созданного алгоритма не менее трёх тестов и проверить на них правильность работы алгоритма.
2. Разработать схему алгоритма для вычисления суммы ряда:
Число N вводится с клавиатуры.
Протестировать алгоритм для N=1, N=2, N=4, N=6. Правильность ответов проверить с помощью калькулятора.
3. Одноклеточная амёба каждые три часа делится на 2 клетки. Разработать схему алгоритма для определения, сколько амёб будет через 3, 6, 9, 12 и 24 часа.
4. Дано натуральное число N и действительное число x. Разработать схему алгоритма для вычисления суммы ряда:
sin x + sin 2x+sin 3x+…sin N*X
Протестировать алгоритм для x=1.5 и N=3. Проверить правильность ответа на калькуляторе.
5. Разработать схему алгоритма для вычисления N-ой степени числа a (aN). Протестировать алгоритм для а) a=3 и N=4, б) a=2 и N=5.
1.
алг
нач
. цел n,s,a
. ввод n
. s:=0
. нц n раз
. . ввод a
. . s:=s+a
. кц
. вывод s
кон
2.
алг
нач
. цел n,i
. вещ s
. ввод n
. s:=0; i:=0
. нц n раз
. . i:=i+1
. . s:=s+1/i
. кц
. вывод s
кон
3.
алг
нач
. цел t,n,i
. ввод t
. n:=1;i:=0
. нц пока i
. . n:=n*2
. . i:=i+3
. кц
. вывод n
кон
4.
алг
нач
. цел n,i
. вещ x,a,s
. ввод n
. ввод x
. s:=0; a:=x;i:=0;
. нц n раз
. . i:=i+1
. . x:=a*i
. . s:=s+sin(x)
. кц
. вывод s
кон
5.
алг
нач
. цел n,a,st,i
. ввод n,a
. i:=0;st:=1
. нц n раз
. . i:=i+1
. . st:=st*a
. кц
. вывод st
кон
2 уровень сложности
1. Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за N дней? Разработать схему алгоритма для решения этой задачи. Протестировать алгоритм для N=3 и N=7.
2. Ежемесячная стипендия студента составляет A рублей в месяц, а расходы на проживание превышают стипендию и составляют B рублей в месяц. Рост цен ежемесячно увеличивает расходы на 3%. Разработать схему алгоритма для расчёта необходимой суммы денег, которую надо единовременно попросить у родителей, чтобы можно было прожить учебный год (10 месяцев), используя только эти деньги и стипендию. Протестировать алгоритм для следующих исходных данных:
а) A=1000, B=1100
б) A=900, B=1000
в) A=600, B=1200
3. Разработать схему алгоритма для нахождения всех делителей натурального числа N. Протестировать алгоритм для N=10, N=75, N=99, N=13.
4. Разработать схему алгоритма для вычисления N! (факториал числа N). Факториал вычисляется по формуле:
N!=
Операцию вычисления факториала использовать нельзя!
Протестировать алгоритм для N=0, N=2 N=4.
1.
алг
нач
. цел n,i
. вещ s,a
. ввод n
. a:=10;s:=a
. нц n-1 раз
. . a:=a*1.1
. . s:=s+a
. кц
. вывод s
кон
2.
алг
нач
. цел n
. вещ s,b
. ввод n |стипендия
. ввод b |расход за первый месяц
. s:=b
. нц 9 раз
. . b:=b*1.03
. . s:=s+b
. кц
. вывод s-n*10|взнос родителей
кон
3.
алг
нач
. цел n,i
. ввод n
. i:=0
. нц n раз
. . i:=i+1
. . если mod(n,i)=0 то вывод i,' ' все
. .
. кц
.
кон
4.
алг
нач
. цел n,i,fac
. ввод n
. i:=1
. если n=0 то fac:=1
. . иначе
. . . fac:=1
. . . нц n-1 раз
. . . . i:=i+1
. . . . fac:=fac*i
. . . кц
. все
. вывод fac
кон
3 уровень сложности
1. Дано натуральное число N. Разработать схему алгоритма для вычисления суммы ряда: S=1!+2!+3!+…+N! (N>1)
Операцию вычисления факториала использовать нельзя!
Протестировать алгоритм для N=3 и N=5
2. Покупатель должен заплатить в кассу S рублей. У него имеются монеты в 1, 2 и 5 рублей, а также купюры достоинством в 10, 50, 100 и 500 рублей (достаточное количество). Сколько монет и купюр разного достоинства отдаст покупатель, если он начинает платить с самых крупных? Операции целочисленного деления (div и mod) использовать нельзя. Разработать схему алгоритма для решения этой задачи. Протестировать алгоритм для S=567, S=1025, S=64, S=13.
3. Числа Фибоначчи (fn) определяются формулами:
f0=f1=1, fn=fn-1+fn-2 при n=2,3,…
Разработать схему алгоритма для вычисления числа Фибоначчи. Определить f10, f25, f40.
4. Разработать схему алгоритма, определяющего, является ли заданное число N простым. Протестировать алгоритм для N=10, N=31, N=13, N=51.
5. Даны натуральное N и действительное x. Разработать схему алгоритма для вычисления суммы ряда:
sin x+sin x2+sin x3+…+sin xN
Протестировать алгоритм для а) x=0.5, N=3, б) x=1, N=5. Проверить правильность его работы с помощью калькулятора.
1.
алг
нач
. цел n,i,j,fac,s
. ввод n
. i:=0
. s:=0
. нц n раз
. . i:=i+1
. . fac:=1
. . j:=0
. . нц i раз
. . . j:=j+1
. . . fac:=fac*j
. . кц
. . s:=s+fac
. кц
. вывод s
кон
2.
алг
нач
. цел s,k500,k100,k50,k10,m5,m2,m1
. k500:=0; k100:=0;k50:=0;k10:=0
. m5:=0;m2:=0;m1:=0
. ввод s
. нц пока s-500>=0
. . k500:=k500+1
. . s:=s-500
. кц
. нц пока s-100>=0
. . k100:=k100+1
. . s:=s-100
. кц
. нц пока s-50>=0
. . k50:=k50+1
. . s:=s-50
. кц
. нц пока s-10>=0
. . k10:=k10+1
. . s:=s-10
. кц
. нц пока s-5>=0
. . m5:=m5+1
. . s:=s-5
. кц
. нц пока s-2>=0
. . m2:=m2+1
. . s:=s-2
. кц
. m1:=s
. вывод '500> ',k500,' '
. вывод '100> ',k100,' '
. вывод '50> ',k50,' '
. вывод '10> ',k10,' '
. вывод '5> ',m5,' '
. вывод '2> ',m2,' '
. вывод '1> ',m1,' '
кон
3.
алг
нач
. цел n,f,f1,f2,i
. ввод n
. если n=0 или n=1 то f:=1
. . иначе
. . . f1:=1;f2:=1; i:=1
. . . нц n-1 раз
. . . . f:=f1+f2
. . . . f1:=f2;f2:=f
. . . кц
. все
. вывод f
кон
4.
алг
нач
. цел n,f,i
. ввод n
. i:=1;f:=1
. нц n-2 раз
. . i:=i+1
. . если mod(n,i)=0 то f:=0 все
. . вывод n,' ',i,';'
. кц
. если f=1 то вывод 'простое'
. . иначе вывод 'не простое'
. все
.
кон
5.
алг
нач
. цел n
. вещ x,s,a
. ввод n,x
. a:=x;s:=0
. нц n раз
. . s:=s+sin(x)
. . x:=x*a
. кц
. вывод s
.
кон
Практическое задание №24
Тема: Программирование циклов на Паскале
1 уровень сложности
1. Написать на Паскале программу, которая запрашивает с клавиатуры N произвольных целых чисел и ищет их сумму. Число N вводится с клавиатуры. Разработать для созданной программы не менее трёх тестов и проверить на них правильность работы алгоритма.
2. Составить на Паскале программу для вычисления суммы ряда:
Число N вводится с клавиатуры.
Протестировать программу для N=1, N=2, N=4, N=6. Правильность ответов проверить с помощью калькулятора.
3. Одноклеточная амёба каждые три часа делится на 2 клетки. Определить, сколько амёб будет через 3, 6, 9, 12 и 24 часа.
4. Дано натуральное число N и действительное число x. Вычислить сумму ряда:
sin x + sin 2x+sin 3x+…sin N*X
Протестировать программу для x=1.5 и N=3. Проверить правильность ответа на калькуляторе.
5. Написать программу для вычисления N-ой степени числа a (aN). Протестировать программу для а) a=3 и N=4, б) a=2 и N=5.
1.
program task_1;
var
i, n, s, a: integer;
begin
write('N>');
readln(n);
s := 0;
for i := 1 to n do
begin
write("a>");
readln(a);
s := s + a
end;
writeln('SUM=', s)
end.
2.
program task_2;
var
i, n: integer;
s: real;
begin
write('N>');
readln(n);
s := 1;
for i := 2 to n do
s := s + 1 / i;
writeln('SUM=', s:5:2)
end.
3.
program task_3;
var
t, k, i: integer;
begin
write('T>');
readln(t);
k := 1; i := 0;
while i < t do
begin
k := k * 2;
i := i + 3
end;
writeln('k=', k)
end.
T время K количество
3 2
6 4
9 8
12 16
24 48
4.
program task_4;
var
n, i: integer;
x, a, s: real;
begin
write('N, x >');
readln(n, x);
s := 0;a := x;
for i := 1 to n do
begin
x := a * i;
s := s + sin(x)
end;
writeln('Sum=', s:5:2 )
end.
0.16
5.
program task_5;
var
n, a, i, st: integer;
begin
write('Введи a и N через пробел>>');
readln(a, n);
st := 1;
for i := 1 to n do
st := st * a;
writeln(a, ' в степени ', n, ' = ', st)
end.
2 уровень сложности
1. Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за N дней? Протестировать программу для N=3 и N=7.
2. Составить программу, которая печатает таблицу умножения и таблицу сложения для числа N в десятичной системе счисления. Протестировать программу для чисел 6 и 9.
3. Составить программу, которая запрашивает пароль (четырёхзначное число) до тех пор, пока он не будет правильно введён. Протестировать программу.
4. Ежемесячная стипендия студента составляет A рублей в месяц, а расходы на проживание превышают стипендию и составляют B рублей в месяц. Рост цен ежемесячно увеличивает расходы на 3%. Составить программу расчёта необходимой суммы денег, которую надо единовременно попросить у родителей, чтобы можно было прожить учебный год (10 месяцев), используя только эти деньги и стипендию. Протестировать программу для следующих исходных данных:
а) A=1000, B=1100
б) A=900, B=1000
в) A=600, B=1200
5. Найти все делители натурального числа N. Протестировать программу для N=10, N=75, N=99, N=13.
6. Написать программу вычисления N! (факториал числа N). Факториал вычисляется по формуле:
N!=
Протестировать программу для N=0, N=2 N=4.
1.
program task_1;
var
n, i: integer;
l, a: real;
begin
write('Введи N>');
readln(n);
a := 10; l := a;
for i := 2 to n do
begin
a := a * 1.1;
l := l + a
end;
writeln(l, ' километров пробежит за ', n, ' дней ')
end.
2.
program task_2;
var
n, i: integer;
begin
write('N>');
readln(n);
for i := 1 to 10 do
writeln(n, '*', i:2, '=', n * i:3, n:6, '+', i:2, '=', n + i:3)
end.
3.
program task_3;
const
parol = 1234;
var
n, i: integer;
begin
write('Введи пароль (четырехзначное число>');
readln(n);
repeat
writeln('Неправильно! Попробуй еще раз.');
write('Введи пароль>');
readln(n);
until n = parol;
writeln('Верно! Молодец!')
end.
4.
program task_4;
var
a, i: integer;
b, s: real;
begin
write('Стипендия>');
readln(a);
write('Расходы>');
readln(b);
s := b;
for i := 2 to 10 do
begin
b := b * 1.03;
s := s + b
end;
writeln('Родительский взнос >', (s - a * 10):6:2, 'руб.')
end.
5.
program task_5;
var
n, i: integer;
begin
write('N>');
readln(n);
for i := 1 to n do
if n mod i = 0 then
write(i, ' ');
end.
6.
program task_6;
var
n, i, fac: integer;
begin
write('N>');
readln(n);
if n = 0 then fac := 1
else
begin
fac := 1;
for i := 2 to n do
fac := fac * i
end;
writeln('Факториал ', n, '=', fac);
end.
3 уровень сложности
1. Дано натуральное число N. Вычислить сумму ряда:
S=1!+2!+3!+…+N! (N>1)
Протестировать программу для N=3 и N=5
2. Покупатель должен заплатить в кассу S рублей. У него имеются монеты в 1, 2 и 5 рублей, а также купюры достоинством в 10, 50, 100 и 500 рублей (достаточное количество). Сколько монет и купюр разного достоинства отдаст покупатель, если он начинает платить с самых крупных? Операции целочисленного деления (div и mod) использовать нельзя. Протестировать программу для S=567, S=1025, S=64, S=13.
3. Числа Фибоначчи (fn) определяются формулами:
f0=f1=1, fn=fn-1+fn-2 при n=2,3,…
Определить f10, f25, f40.
4. Вывести на экран все простые числа в диапазоне от 2 до N. Протестировать программу для N=100, N=300.
5. Даны натуральное N и действительное x. Вычислить сумму ряда:
sin x+sin x2+sin x3+…+sin xN
Протестировать программу для а) x=0.5, N=3, б) x=1, N=5. Проверить правильность её работы с помощью калькулятора.
6. Построить таблицу истинности для логического выражения (A OR B) AND C.
1.
program task_1;
var
n, i, fac, s, j: integer;
begin
write('N>');
readln(n);
s := 0;
for i := 1 to n do
begin
fac := 1;
for j := 1 to i do
fac := fac * j;
//write(fac, ' ');
s := s + fac
end;
writeln('Сумма факториалов ', n, '=', s);
end.
2.
program task_2;
var
s, k10, k50, k100, k500, m1, m2, m5: integer;
begin
write('S>');
readln(s);
k10 := 0;k50 := 0;k100 := 0;
m1 := 0; m2 := 0;m5 := 0;
while s - 500 >=0 do
begin
k500 := k500 + 1;
s := s - 500
end;
while s - 100 >=0 do
begin
k100 := k100 + 1;
s := s - 100
end;
while s - 50 >=0 do
begin
k50 := k50 + 1;
s := s - 50
end;
while s - 10 >=0 do
begin
k10 := k10 + 1;
s := s - 10
end;
while s - 5 >= 0 do
begin
m5 := m5 + 1;
s := s - 5
end;
while s - 2 >=0 do
begin
m2 := m2 + 1;
s := s - 2
end;
m1 := s;
writeln('500 купюр ', k500, ' штук');
writeln('100 купюр ', k100, ' штук');
writeln('50 купюр ', k50, ' штук');
writeln('10 купюр ', k10, ' штук');
writeln('5 монет ', m5, ' штук');
writeln('2 монет ', m2, ' штук');
writeln('1 монет ', m1, ' штук');
end.
3.
program task_3;
var
n, f, f1, f2: longint;
i: byte;
begin
write('Введи n >');
readln(n);
if (n = 0) or (n = 1) then f := 1
else
begin
f1 := 1; f2 := 1;
for i := 2 to n do
begin
f := f1 + f2;
f1 := f2; f2 := f;
//write(f, ' ')
end;
end;
writeln('f',n,' =',f)
end.
n f
10 89
25 121393
40 165580141
4.
program task_4;
var
n, i, j: integer;
f: boolean;
begin
writeln('n >');
readln(n);
for i := 2 to n do
begin
f := true;
for j := 2 to i - 1 do
if i mod j = 0 then begin f := false; break end;
if f then write(i, ' ')
end;
end.
5.
program task_5;
var
n, i: integer;
x, a, s: real;
begin
write('N, x >');
readln(n, x);
s := 0; a := x;
for i := 1 to n do
begin
s := s + sin(x);
x := x * a
end;
writeln('Sum=', s:5:2)
end.
6.
program task_6;
var
a, b, c, f: boolean;
begin
writeln('A':7, 'B':7, 'C':7, 'F':7);
for a := false to true do
for b := false to true do
for c := false to true do
begin
f := (a or b) and c;
write(a:7, b:7, c:7, f:7);
writeln
end;
end.
Практическое задание №25
Тема: Программирование циклов и ветвлений на Паскале.
Алгоритм Евклида
1 уровень сложности
1. Набрать и отладить программу нахождения наибольшего общего делителя и протестировать её на следующих исходных данных:
а) a=40 b=64
б) a=32 b=16
в) a=12 b=20
г) a=5 b=12
2. Составить на языке Паскаль программу, которая запрашивает с клавиатуры N целых чисел и считает, сколько из них положительных, сколько отрицательных и сколько нулей. Разработать для программы не менее двух тестов и доказать правильность её работы.
3. Написать программу, которая выводит на экран все двухзначные числа, делящиеся на 3 или на 5 (использовать операции целочисленного деления div или mod).
1.
program task_1;
var
M, N: integer;
begin
write('Введи M и N>>');
readln(M, N);
while M <> N do
if M > N then M := M - N
else N := N - M;
writeln('НОД=', M)
end.
2.
program task_2;
var
i, a, k1, k2, k0, n: integer;
begin
k1 := 0; k2 := 0;k0 := 0;
write('Введи количество чисел');
readln(n);
for i := 1 to n do
begin
write('Введи число:');
readln(a);
if a > 0 then k1 := k1 + 1
else if a < 0 then k2 := k2 + 1
else k0 := k0 + 1
end;
writeln('Положительных >>', k1, ' Отрицательных >>', k2, ' Количество нулей >> ', k0)
end.
3.
program task_3;
var
i: integer;
begin
for i := 10 to 99 do
if (i mod 3 = 0) or (i mod 5 = 0) then write(i, ' ')
end.
2 уровень сложности
1. Составить программу нахождения наименьшего общего кратного (НОК) двух чисел m и n, используя формулу n*m=НОД(n,m)*НОК(n,m). Разработать тесты для проверки правильности работы программы.
2. Проверить, являются ли два числа a и b взаимно простыми. Два числа называются взаимно простыми, если их наибольший общий делитель равен 1. Протестировать программу для следующих исходных данных:
а) a=5 b=95
б) a=3 b=100
в) a=11 b=98
3. Написать программу сокращения дроби , где N – целое, M – натуральное число. Использовать алгоритм Евклида. Разработать тесты для проверки правильности работы программы.
1.
program task_1;
var
m, n, p, d: integer;
begin
write('Введи M, N >>');
readln(m, n);
p := m * n;
while m <> n do //определение НОД
if m > n then m := m - n
else n := n - m;
d := m;//НОД
writeln('НОK =', p div d)
end.
1) 10, 30
2) 40, 16
3) 15, 80
2.
program task_2;
var
a, b: integer;
begin
write('Введи a и b>>');
readln(a, b);
while a <> b do
if a > b then a := a - b
else b := b - a;
if a = 1 then writeln('Числа взаимно простые')
else writeln('Числа не взаимно простые');
end.
3.
program task_3;
var
M, N, a, b, c: integer;
begin
write('Введи M и N>>');
readln(M, N);
a := M; b := N;
while M <> N do
if M > N then M := M - N
else N := N - M;
c := M;
writeln('Сокращенная дробь >', a / c, '/', b / c)
end.
1) 5 15
2) 24 4
3) 21 43
3 уровень сложности
1. Составить на языке Паскаль программу нахождения наибольшего общего делителя трёх чисел, используя следующую формулу: НОД(a,b,c)=НОД(НОД(a,b),c). Протестировать программу на следующих исходных данных:
а) a=40 b=64 c=120
б) a=32 b=45 c=60
в) a=11 b=220 c=33
г) a=175 b=1025 c=600
2. Написать программу, запрашивающую с клавиатуры целые числа и определяющую максимальное и минимальное из них. Окончание ввода – число 0. Протестировать программу для последовательности: -3 5 6 -11 24 -1 0.
3. Составить программу для графического изображения делимости чисел от 1 до N (N – исходное данное). В каждой строке надо выводить число и столько плюсов, сколько делителей у этого числа. Например, если исходное данное число равно 4, то на экране должно быть выведено:
1+
2++
3++
4+++
1.
program task_1;
var
a, b, c, d: integer;
begin
write('Введи a, b, c>>');
readln(a, b, c);
while a <> b do
if a > b then a := a - b
else b := b - a;
d := a;//НОД a, b
while d <> c do
if d > c then d := d - c
else c := c - d;
writeln('НОД =', d)//НОД a, b, c
end.
2.
program task_2;
var
a, max, min: integer;
begin
write('Введи число>>');
readln(a);
max := a; min := a;
while a <> 0 do
begin
if a > max then max := a;
if a < min then min := a;
write('Введи число>>');
readln(a);
end;
writeln('max=', max, ' min=', min)
end.
3.
program task_3;
var
n, j, i: integer;
begin
writeln('введите число');
readln(n);
for i := 1 to n do
begin
write(i);
for j := 1 to n do
if (i mod j = 0) then
write('+');
writeln;
end;
end.
ЕК ЦОР: Часть2, глава 6, §39. ЦОР № 16
Программа-конструктор
*Цитирирование задания со ссылкой на учебник производится исключительно в учебных целях для лучшего понимания разбора решения задания.
*размещая тексты в комментариях ниже, вы автоматически соглашаетесь с пользовательским соглашением