Использование циклов (язык Паскаль) в задачах ЕГЭ по информатике
презентация к уроку по информатике и икт (9, 10, 11 класс) на тему
При подготовке к ЕГЭ по информатике необходимо объяснить очень подробно, с примерами тему "Циклы в программировании на языке Паскаль". Задания №8, 19, 20, 21, 24, 25 в ЕГЭ по информатике требуют хороших знаний по данной теме, к каждом из этих заданий используется цикл. В моей презентации рассмотрены конкретные задачи по данной теме.
Скачать:
Вложение | Размер |
---|---|
задачи с циклами в ЕГЭ по информатике (презентация) | 93.76 КБ |
Предварительный просмотр:
Подписи к слайдам:
Стандартные алгоритмы A, B,C A>B MAX:=A MAX:=B C>MAX MAX:=C Найти max из трёх чисел . Program max3; Uses crt ; Var a,b,c,max:integer ; Begin Readln ( a,b,c ); If A>B then MAX:=A else MAX:=B; If C>MAX then MAX:=C; End;
Найти произведение чисел А и В, используя только операцию сложения. A*B=A+A+A+A… B раз A,B I:=I+1 I
Заменить умножение сложением A*B=A+A+A+A… B раз PROGRAM Z1; USES CRT; VAR A,B,P,I:INTEGER; BEGIN WRITE (' ВВЕДИТЕ МНОЖИТЕЛИ A и B '); READLN(A,B); I:=0; P:=0; WHILE I
Деление через вычитание PROGRAM Z1; USES CRT; VAR A,B,P,I:INTEGER; BEGIN WRITE (' ВВЕДИТЕ ДЕЛИМОЕ И ДЕЛИТЕЛЬ A и B '); READLN(A,B); P:=A; I:=0; WHILE A>=B DO BEGIN A:=A-B; I:=I+1; END; WRITE(‘ При делении ',P,' на ',B,' целая часть =',I,' остаток =',A ); END. Деление на 7. PROGRAM Z1; USES CRT; VAR A,B,P,I:INTEGER; BEGIN WRITE(' ВВЕДИТЕ ДЕЛИМОЕ A '); READLN(A); P:=A; I:=0; WHILE A>=7 DO BEGIN A:=A-7; I:=I+1; END; WRITE (‘При делении ', P ,' на 7 целая часть= ', I ,' остаток= ', A ); END.
Задачи ЕГЭ №8 Определите, что будет напечатано в результате работы следующего фрагмента программы : var k, s: integer; begin s:=0; k:=0; while s < 1024 do begin s:=s+10; k:=k+1; end; write(k); end . Решение: из программы видно, что начальные значения переменных k и s равны нулю цикл заканчивается, когда нарушается условие s < 1024 , то есть количество шагов цикла определяется изменением переменной s после окончания цикла выводится значение переменной k таким образом, задача сводится к тому, чтобы определить число шагов цикла, необходимое для того, чтобы значение s стало не меньше 1024 с каждым шагом цикла значение s увеличивается на 10, а значение k – на единицу, так что фактически k – это счётчик шагов цикла поскольку s увеличивается на 10, конечное значение s должно быть кратно 10, то есть это 1030 > 1024 для достижения этого значения переменную s нужно 103 раза увеличить на 10, поэтому цикл выполнится 103 раза так как k – это счётчик шагов цикла, конечное значение k будет равно 103 Ответ: 103.
Примеры задач из 8-го задания Определите, что будет напечатано в результате работы следующего фрагмента программы: var n, s: integer; begin n := 0; s := 512; while s >= 0 do begin s := s - 20; n := n + 1 end; write(n) end . 512/20=25 И 12 В ОСТАТКЕ 12> S => n +1, 25+1= 26 2) Определите , что будет напечатано в результате работы следующего фрагмента программы: var n, s: integer; begin n := 4; s := 15; while s <= 250 do begin s := s + 12; n := n + 2 end; write(n) end . 250/12=20 и 10 в ост, нач . значения s =15, 240+15=255>250, поэтому цикл прокрутится 20 раз. N=40+4( нач.значение )= 44
Пример 8-го задания: При каком наименьшем введенном числе d после выполнения программы будет напечатано 63? var n, s, d: integer; begin readln (d); n := 3 ; s := 57 ; while s <= 1200 do begin s := s + d; n := n + 4 end; write(n) end. Начальные значения! n :=3 , вычитаем его из конечного значения 63-3=60 , к n прибавляется в цикле одно и тоже число 4: n := n + 4, т.о . сложение можно заменить умножением. Сколько раз должен прокрутиться цикл, чтобы прибавляя на каждом шаге 4, получить 60? 60/4=15 Цикл крутиться 15 раз. Переходим к s . Начальное значение s := 57, т.о . цикл остановится когда s <= 1200 -57, s <= 1 143. какое число нужно прибавлять к s 15 раз, чтобы получить число большее 1143? 1143/15=76.2. Н адо понять, что при 76 мы войдём в цикл и к n прибавиться 4 16-ый раз, т.е. лишний раз. Значит, чтобы остановить вовремя к s надо прибавлять 77 – это минимальное значение . Если надо узнать максимальное, то 1143 делим на 14 (находим max число, которое после 14-го шага цикла войдёт в цикл, а после 15-го остановит цикл) 1143/14=81.6. s:=s+81 14 раз даст 1134 < 1143, а s:= s+8 2 даст 1148 > 1143, т.е. на 15-ый шаг в цикл не войдёт и к n прибавится 4 только 14 раз, что не правильно. Т.о . любое число из интервала [77;81] удовлетворяет условиям задачи.
Пример 8-го задания: При каком наибольшем введенном числе d после выполнения программы будет напечатано 150 var n, s, d: integer; begin readln (d); n := 3 ; s := 38 ; while s <= 1200 do begin s := s + d; n := n + 7 end; write(n) end. n := 3, 150-3=147 (за время работы цикла n будет =147), цикл работает 147/7=21 раз Цикл остановится при s>1200 - 38 =1162. 1162/21=55.3 (min значение 56) 1162/20=58.1 (21-1=20 предыдущий цикл) при d= 58 цикл будет работать 21 раз, а при 59 – только 20 раз. Т.о . 58 – это максимальное значение d . Ответ: 58
Алгоритмы, которые надо знать наизусть при решении №20, 21 и 24: Разбить число на отдельные цифры и разные операции с ними: сложение, найти количество, выбрать max или min , переставить цифры в обратном порядке (формула Горнера). Алгоритм Евклида для нахождения НОД (двумя способами: через разность и через остаток от деления) Найти делители числа, в том числе минимальный делитель (найти простое число и т.п.)
Сосчитать сколько цифр в числе N ( при разборе задания обратить внимание на систему счисления!) VAR N,k:INTEGER ; BEGIN WRITE(' ВВЕДИ ЧИСЛО '); READLN(N); WHILE N>0 DO BEGIN N:=N DIV 10; k:=k+1 END; WRITELN(k) END . Сложить 1-ю и последнюю цифры числа. VAR N,C:INTEGER; BEGIN WRITE(' ВВЕДИ ЧИСЛО '); READLN(N); C:=N MOD 10; WHILE N>10 DO BEGIN N:=N DIV 10; END; WRITELN(C+N) END.
Найти число делителей числа VAR N,D:INTEGER; BEGIN WRITE(' ВВЕДИ ЧИСЛО '); READLN(N); D:=2; WHILE D Алгоритм Евклида (наибольший общий делитель) program NOD; uses crt ; var a,b:integer ; begin readln ( a,b ); while a<> b do if a>b then a:=a-b else b:=b-a; write(a); end. A,B A<>B A>B A:=A-B B:=B-A A При a>b while b > 0 do begin r := a mod b ; a := b ; b := r ; end ; Задачи №20 из ЕГЭ Ниже записана программа. Получив на вход число , эта программа печатает два числа, L и M . Укажите наибольшее из таких чисел X , при вводе которых алгоритм печатает сначала 3, а потом 7. var x, L, M: integer; begin readln (x); L:=0; M:=0; while x > 0 do begin L:= L + 1; M:= M + x mod 10; x:= x div 10; end; writeln (L); write(M); end. Что делает этот цикл? 1) while x > 0 do begin L:= L + 1; x:= x div 10; end ; (счётчик цикла) Что делает этот цикл? 2) while x > 0 do begin M:= M + x mod 10; x:= x div 10; end ; (сумма цифр числа) Ответ: 700 Ниже записана программа. Получив на вход число , эта программа печатает два числа, а и b . Укажите наименьшее из чисел Х, при вводе которых алгоритм печатает сначала 19, а потом 4. 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 do begin с := x mod 10; a := a+c ; x := x div 10; end; Сумма цифр числа х (= 19) 19 = 9+9+1 и т.п. b :=10; if c < b then b := c ; (на выходе b =4) 1-я с (цифра) явно < 10, , но надо, чтобы была хотя бы одна 4 и число х -> min (469 ?) Ручная прокрутка! (для проверки) Открытый банк заданий ФИПИ Определите число, которое будет напечатано в результате выполнения программы var n, s: integer; begin n := 0; s := 301; while s > 0 do begin s := s - 10; n := n + 2 end; write(n) end. 301/10=30 и 1 в остатке, 1 >0 , т.о. N=2*30+ 2 = 6 2 Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 10 9 , и выводится минимальная цифра этого числа. Программист торопился и написал программу неправильно. var N: longint ; digit, min_digit : integer; begin readln (N); min_digit := 9; while N >= 10 do begin digit := N mod 10; if digit < min_digit then min_digit := digit; N := N div 10; end; writeln (digit); End. While N>=10 do и writeln (digit) Напишите в ответе число, которое будет напечатано в результате выполнения следующего алгоритма var a,b,t,M,R :integer; Function F(x:integer):integer; begin F := 2*(x*x-16)*(x*x-16)+5 end; begin a := -11; b := 11; M := a; R := F(a); for t := a to b do begin if (F(t) Использованы материалы: Сайт ФИПИ http:// 85.142.162.119/os11/xmodules/qprint/index.php?proj=B9ACA5BBB2E19E434CD6BEC25284C67F Сайт К.Ю.Полякова http :// kpolyakov.spb.ru/school/ege.htm
По теме: методические разработки, презентации и конспекты
язык паскаль. Практикум по теме "Циклы" для 9 класса
язык паскаль. Практикум по теме "Циклы" для 9 класса...
Язык Паскаль (ветвление,циклы)
Презентации к учебному материалу по теме"Алгоритмизация и программирование" . Язык Паскаль -операторы ветвления, циклические вычисления....
Язык Паскаль (ветвление,циклы)
Задания для самостоятельной работы к учебному материалу по теме"Алгоритмизация и программирование" . (Ветвление, циклы)...
Циклы на языке Паскаль
Данная презентация предназначена для изучения темы "Циклы на языке Паскаль" в 9 классе...
Программирование на языке Паскаль. Раздел "Циклы".
Материал предоставлен в виде подробной презентации. Программирование на языке Паскаль, раздел "Циклы", для учащихся 9-10 классов. Презентацию можно разбить на блоки и объяснять каждый из видов циклов ...
Использование операций целочисленной арифметики в задачах ЕГЭ по информатике
В данном материале представлена презентация, посвященная методике решения задания B8 ЕГЭ по информатике(№20, 2015). Разбираются основные алгоритмы с использованием операций div и mod, которые использу...
Разработка урока "Решение задач на языке Паскаль с использованием операторов цикла"
Урок является заключительным по теме «Программирование циклов», тема рассчитана на 6 учебных часов в разделе «Программное управление работой компьютера». Урок организован в соответствии с реализ...