Презентация «Анализ алгоритма, содержащего цикл и ветвление. Решение 20 задачи ЕГЭ»
презентация к уроку по информатике и икт (11 класс) на тему

Богачева Галина Владимировна

Вашему вниманию предлагается презентация «Анализ алгоритма, содержащего цикл и ветвление. Решение 20 задачи ЕГЭ», в которой подробно разобраны задачи демоверсий 2015-2018 годов этого задания и из открытого банка заданий ФИПИ. В презентации проанализированы программы, приведены решения, выделены общие рекомендации для решения и даны задачи для самостоятельного решения. Презентация может быть использована при повторении темы «Программирование», при подготовке выпускников к ЕГЭ, а также на предэкзаменационной консультации.

Скачать:

Предварительный просмотр:


Подписи к слайдам:

Слайд 1

Учитель – Богачёва Г.В. Лицей № 144 Санкт-Петербурга Анализ алгоритма, содержащего цикл и ветвление Решение 20 задачи ЕГЭ

Слайд 2

На что обратить внимание : Понимать, как работает while ( цикл с предусловием). Необходимо знать операции mod – остаток от деления и div – деление нацело, понимать, что x:= x div 10 – удаляет младший разряд из числа, а d := x mod 10 – выделяет последнюю цифру из числа (10 с.с .). L mod 2 = 0 - проверка числа на чётность. Знать, как считается количество ( b:= b + 1 ) и сумма ( s:= s + a ) R := 10*R + d – увеличиваем число на один разряд и прибавляем цифру (добавляем цифру к записи числа)

Слайд 3

Задача 20 из демоверсии 2015 Ниже на четырёх языках программирования записан алгоритм. Получив на вход число x , этот алгоритм печатает два числа: a и b . Укажите наименьшее из таких чисел x , при вводе которых алгоритм печатает сначала 2, а потом 15.

Слайд 4

Бейсик Python Си Паскаль DIM X, A, B AS INTEGER INPUT X A=0: B=1 WHILE X > 0 A = A+1 B = B*(X MOD 10) X = X \ 10 WEND PRINT A PRINT B x = int (input()) a = 0 b = 1 while x > 0: a = a + 1 b = b * (x % 10) x = x // 10 print(a) print(b) #include< stdio.h > int main(void) { int x, a, b; scanf ("%d", &x); a = 0; b = 1; while (x > 0){ a = a + 1; b = b * (x % 10); x = x / 10; } printf ("%d\ n%d ", a, b); } var x, a, b: integer; begin readln (x); a:=0; b:=1; while x>0 do begin a:=a+1; b:=b*(x mod 10); x:= x div 10 end; writeln (a); write(b) end .

Слайд 5

Решение: readln (x); a:=0; b:=1; while x>0 do begin a:=a+1; b:=b*(x mod 10); x:= x div 10 end; writeln (a); write(b) Анализируем алгоритм – на экран сначала выведется a = 2 (значит, команды в цикле будут повторены 2 раза: a := a+1 ), затем b = 15. Команда b := b *( x mod 10) находит произведение b и последней цифры числа x ( mod – остаток от деления на 10). Команда x := x div 10 отбрасывает последнюю цифру от числа x ( div – деление нацело). Так как цикл повторяется до тех пор, пока x >0 (то есть выходим из цикла, как только х=0) и мы знаем, что он будет повторён 2 раза ( a =2), то отсюда x – двузначное число. Множители числа 15: 3, 5. Наименьшее двузначное число, которое из них можно составить, 35. Ответ: 35

Слайд 6

Задача 20 из демоверсии 2016 Ниже на четырёх языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает число M. Известно, что x > 100. Укажите наименьшее такое (т.е. большее 100) число x, при вводе которого алгоритм печатает 26.

Слайд 7

Бейсик Python Си Паскаль DIM X, L, M AS INTEGER INPUT X L = X M = 65 IF L MOD 2 = 0 THEN M = 52 ENDIF WHILE L <> M IF L > M THEN L = L – M ELSE M = M – L ENDIF WEND PRINT M x = int (input()) L = x M = 65 if L % 2 == 0: M = 52 while L != M: if L > M: L = L - M else: M = M - L print(M) #include< stdio.h > void main() { int x, L, M; scanf ("%d", &x); L = x; M = 65; if (L % 2 == 0) M = 52; while (L != M){ if(L > M) L = L - M; else M = M - L; } printf ("%d", M); } var x, L, M: integer; begin readln (x); L := x; M := 65; if L mod 2 = 0 then M := 52; while L <> M do if L > M then L := L – M else M := M – L; writeln (M); end .

Слайд 8

Решение: readln (x); L := x; M := 65; if L mod 2 = 0 then M := 52; while L <> M do if L > M then L := L – M else M := M – L ; writeln (M ); Анализируем алгоритм – в цикле до тех пор, пока L <> M , вычитаем их большего операнда меньший ( L := L – M или M := M – L ). Узнаём – это алгоритм Евклида для вычисления наибольшего общего делителя (НОД), т.е., если напечатано число 26, то НОД ( x, M) = 26. Если х – нечетное, то M = 65, и НОД ( x, 65 ) = 26 , но 65 не делится на 26, это невозможно. Значит, была замена, M = 52, ищем НОД ( x, 52 ) = 26 . По условию x> 100, берём 104, но НОД (104 , 52 ) = 52, следующее число, которое делится на 26, 104+26 = 130. Ответ : 130

Слайд 9

Задача 20 из демоверсии 2017 Ниже на четырёх языках программирования записан алгоритм. Получив на вход натуральное число x, этот алгоритм печатает число R. Укажите такое число x, при вводе которого алгоритм печатает двузначное число, сумма цифр которого равна 16. Если таких чисел x несколько, укажите наименьшее из них.

Слайд 10

Бейсик Python Си Паскаль DIM X,D,R AS LONG INPUT X R = 0 WHILE X>0 D = X MOD 10 R = 10*R + D X = X \ 10 WEND PRINT R x = int(input()) R = 0 while x>0: d = x % 10 R = 10*R + d x = x // 10 print(R) #include < stdio.h > int main() { long x,d,R ; scanf ("% ld ", &x); R = 0; while (x>0) { d = x % 10; R = 10*R + d; x = x / 10; } printf ("% ld ", R); return 0; } var x,d,R : longint ; begin readln (x); R := 0; while x>0 do begin d := x mod 10; R := 10*R + d; x := x div 10 end; writeln (R) end .

Слайд 11

Решение: readln (x); R := 0; while x>0 do begin d := x mod 10; R := 10*R + d; x := x div 10 end; w riteln ( R) Анализируем алгоритм – в цикле до тех пор, пока x>0 , выделяем последнюю цифру ( d := x mod 10) , удаляем последний разряд ( x := x div 10 ), из этих цифр составляем число, начиная с последней цифры, то есть переворачиваем число. Сумма двух цифр равна 16, возможны варианты – 8,8 или 9,7. Наименьшее число – 79. Ответ: 79

Слайд 12

Задача 20 из демоверсии 2018 Ниже на пяти языках программирования записан алгоритм . Получив на вход число x , этот алгоритм печатает два числа: L и M . Укажите наименьшее число x , при вводе которого алгоритм печатает сначала 5, а потом 7.

Слайд 13

Бейсик Python Си ++ Паскаль DIM X, L, M AS INTEGER INPUT X L = 0 M = 0 WHILE X > 0 M = M + 1 IF X MOD 2 <> 0 THEN L = L + 1 END IF X = X \ 2 WEND PRINT L PRINT M x = int (input()) L = 0 M = 0 while x > 0: M = M + 1 if x % 2 != 0: L = L + 1 x = x // 2 print(L) print(M) #include < iostream > using namespace std ; int main(){ int x, L, M; cin >> x; L = 0; M = 0; while (x > 0) { M = M + 1; if(x % 2 != 0) { L = L + 1; } x = x / 2; } cout << L << endl << M << endl; return 0; } var x, L, M: integer; begin readln (x); L := 0; M := 0; while x>0 do begin M := M + 1; if x mod 2 <> 0 then L := L + 1; x := x div 2; end; writeln (L); writeln (M); end .

Слайд 14

Решение: readln (x ); L := 0 ; M := 0; while x>0 do begin M := M + 1; if x mod 2 <> 0 then L := L + 1; x := x div 2; end; writeln (L); writeln (M ); Анализируем алгоритм – до тех пор, пока в введённом числе есть цифры ( x>0 ), повторяем деление этого числа нацело на 2, т.е. осуществляем алгоритм перевода числа из 10 с.с . в 2 с.с ., при этом M считает количество цифр в получившемся числе, а L – количество нечётных цифр, т.е. 1. Наименьшее двоичное число из 7 цифр, в котором 5 единиц – 1001111, переводим в 10 с.с . – = 1*2 6 + 1*2 3 +1*2 2 +1*2 1 +1*2 0 = 64+8+4+2+1= 79 (введённое число) Ответ: 79

Слайд 15

var x, a, b, c: integer; begin readln (x); a:= 0; b:= 0; while x > 0 do begin c:= x mod 2; if c = 0 then a:= a + 1 else b:= b + 1; x:= x div 10; end; writeln (a); writeln (b); end. Ниже записан алгоритм. Укажите наибольшее из таких чисел x , при вводе которых алгоритм печатает сначала 3, а потом 2 Решение : Анализируем алгоритм: Вводим число x. Д о тех пор, пока в введённом числе есть цифры ( x>0 ), повторяем деление этого числа нацело на 10 ( x:= x div 10 ). В переменную c записываем остаток от деления на 2, переменная a – счетчик чётных цифр, переменная b – счетчик нечётных цифр. Если в числе 3 четных цифры и 2 нечетных цифры (по условию задачи), то наибольшее число будет 99888 (9- максимальная нечетная цифра, 8 – чётная) Ответ: 99888

Слайд 16

var x, a, b, c: integer; begin readln (x); a:= 0; b:= 0; while x > 0 do begin c:= x mod 2; if c = 0 then a:= a + 1 else b:= b + 1; x:= x div 6 ; end; writeln (a); writeln ( b ); end . Ниже записан алгоритм. Укажите наибольшее из таких чисел x , при вводе которых алгоритм печатает сначала 4, а потом 0 Ответ: 4444 Для самостоятельного решения

Слайд 17

var x, a, b: integer; begin readln (x); a:=0; b:=0; while x>0 do begin a:= a + 2; b:= b + (x mod 10); x:= x div 10; end; writeln (a); write(b); end. Ниже записана программа . Получив на вход число x , эта программа печатает 2 числа, a и b. Укажите наименьшее из таких чисел x , при вводе которых алгоритм печатает сначала 6, а потом 5. Решение : Анализируем алгоритм: Вводим число x. Д о тех пор, пока в введённом числе есть цифры ( x>0 ), повторяем деление этого числа нацело на 10 ( x:= x div 10 ). С каждой цифрой значение переменной a увеличивается на 2, то есть если a = 6 , то в числе всего 3 цифры . В переменной b накапливается сумма цифр ( x mod 10 – выделяет последнюю цифру). Сумма трех цифр равна 5. Варианты 1+2+2, 2+3+0. Наименьшее трехзначное число, составленное из этих цифр - 122 Ответ: 122

Слайд 18

var x, a, b: integer; begin readln (x); a:=0; b:=0; while x>0 do begin a:= a + 2; b:= b + (x mod 10); x:= x div 10; end; writeln (a); write(b); end . Ниже записана программа . Получив на вход число x , эта программа печатает 2 числа, a и b. Укажите наименьшее из таких чисел x , при вводе которых алгоритм печатает сначала 8, а потом 19. Ответ: 1099 Для самостоятельного решения

Слайд 19

var x, a, b, c: integer; begin readln (x); a := 0; b := 10; while x>0 do begin с := x mod 10; a := a+c ; if c0 ), повторяем деление этого числа нацело на 10 ( x:= x div 10 ). В переменной a накапливается сумма цифр ( x mod 10 – выделяет последнюю цифру). В переменную b записывается наименьшая цифра.( if c

Слайд 20

var x, a, b, c: integer; begin readln (x); a := 0; b := 10; while x>0 do begin с := x mod 10; a := a+c ; if c

Слайд 21

var x, y, a, b: longint ; begin a := 0; b := 0; readln (x); while x > 0 do begin y := x mod 10; if y > 3 then a := a + 1; if y < 8 then b := b + 1; x := x div 10 end; writeln (a); writeln (b) end. Ниже записан алгоритм. Получив на вход число x , эта программа печатает 2 числа, a и b. Укажите наименьшее пятизначное число x , при вводе которых алгоритм печатает сначала 5, а потом 3. Решение : Анализируем алгоритм: Вводим число x. Д о тех пор, пока в введённом числе есть цифры ( x>0 ), повторяем деление этого числа нацело на 10 ( x:= x div 10 ). y := x mod 10 – выделяет последнюю цифру . В переменную b записывается количество цифр меньше 8. Все пять цифр больше 3, из них 3 < 8. Наименьшее число - 44488 В переменную a записывается количество цифр больше 3. Ответ: 44488

Слайд 22

var x, y, a, b: longint ; begin a := 0; b := 0; readln (x); while x > 0 do begin y := x mod 10; if y > 4 then a := a + 1; if y < 6 then b := b + 1; x := x div 10 end; writeln (a); writeln (b) end. Ниже записан алгоритм. Получив на вход число x , эта программа печатает 2 числа, a и b. Укажите наименьшее пятизначное число x , при вводе которых алгоритм печатает сначала 5, а потом 4. Ответ: 55556 Для самостоятельного решения

Слайд 23

Укажите наибольшее из таких чисел x , при вводе которых алгоритм печатает сначала 3, а потом опять 3. Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 3. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 14, а потом 5. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 15, а потом 6. var x, a, b, c: integer; begin readln (x); a := 0; b := 0; while x>0 do begin c := x mod 2; if c=0 then a := a+1 else b := b+1; x := x div 10; end; writeln (a); write(b); end . var x, a, b, c: integer; begin readln (x); a := 0; b := 0; while x>0 do begin c := x mod 2; if c=0 then a := a+1 else b := b+1; x := x div 10; end; writeln (a); write(b); end . var x, a, b, c: integer; begin readln (x); a := 0; b := 10; while x>0 do begin c := x mod 10; a := a+c ; if c0 do begin c := x mod 10; a := a+c ; if c

Слайд 24

Источники: Открытый банк заданий по информатике ФИПИ http://85.142.162.119/os11/xmodules/qprint/index.php?proj=B9ACA5BBB2E19E434CD6BEC25284C67F Демоверсии ЕГЭ по информатике прошлых лет http:// www.fipi.ru/ege-i-gve-11/demoversii-specifikacii-kodifikatory Сайт К.Ю. Полякова http ://kpolyakov.spb.ru/school/ege.htm Картинки : http://anatoliynikulininfo.ru , http://clipart-library.com


По теме: методические разработки, презентации и конспекты

Презентация к урокам по теме "Пирамида" (с решением задач)

Замечательная презентация Е.М.Савченко будет помогать учащимся с увлечением изучать материал....

Алгоритмы и схемы для обучения решению задач по математике.

В материале предложены алгоритмы и схемы, помогающие ученикам решать задачи по математике....

Презентация к уроку математики. (1 класс). Тема: "Решение задач"

Презентация составленна по программе "Перспективная начальная школа"...

Теоретические основы формирования мыслительных операций «сравнение», «анализ и синтез» обучающихся в процессе решения задач по физике

В настоящий момент информационное общество нуждается в человеке «обучаемом», а не только «обученном»: способном самостоятельно учиться и многократно переучиваться в течение сво...

Цикл со счетчиком. Решение задач

Разработка урока по теме: "Цикл со счетчиком. Решение задач"....

Анализ программ, содержащей циклы и ветвления

Материал предназначен для подготовки к ЕГЭ по информатике....

Презентация "Алгоритмы с ветвлением" + решение задач. 6 класс

Презентация для работы на уроке в 6 классе....