Алгоритмические структуры Решение задач Искандарова А.Р. учитель информатики МБОУ СОШ 18 г.Уфа
Вопросы для повторения: Назовите базовые алгоритмические структуры. Следование, ветвление, цикл Следование – это … линейная последовательность действий Ветвление – это … выбор одной из двух серий действий с выходом на общее продолжение Цикл – это … повторение серии действий по условию
Задание 1 Нарисуйте блок-схемы и напишите на языке программирования Паскаль два варианта алгоритма решения задачи: выбрать из двух числовых величин наибольшее значение. Первый вариант – с полным ветвлением, второй вариант – с неполным ветвлением.
Полное ветвление начало ввод a, b c:=a a>b нет вывод c конец да c:=b
Полное ветвление начало ввод a, b c:=a a>b нет вывод c конец да c:=b Program max1; var a,b,c: integer; begin read(a,b); if (a>b) then c:=a else c:=b; writeln('Наибольшее число=',c); end.
Неполное ветвление начало ввод a, b c:=a a>b нет вывод S конец да c:=b
Неполное ветвление начало ввод a, b c:=a a>b нет вывод c конец да c:=b Program max2; var a,b,c: integer; begin read(a,b); c:=b; if (a>b) then c:=a; writeln('Наибольшее число=',c); end.
Задание 2 Нарисуйте блок-схемы и напишите на языке программирования Паскаль два варианта алгоритма решения задачи: выбрать из трех числовых величин наименьшее значение. Первый вариант – с вложенными ветвлениями, второй вариант – с последовательными ветвлениями.
Вложенные ветвления начало ввод a, b,c d:=a a<b нет вывод d конец да a<cb<c d:=cd:=bd:=c да нет
Вложенные ветвления начало ввод a, b,c d:=a a<b - вывод d конец a<cb<c d:=cd:=bd:=c Program min1; var a,b,c,d: integer; begin read(a,b,c); if (a<b) then if (a<c)then d:=a else d:=c else if (b<c) then d:=b else d:=c; writeln('Наименьшее число=',d); end
Последовательные ветвления начало ввод a,b,c d:=a (a<b)and(a<c) нет вывод d конец да d:=b (b<a)and(b<c) нет да d:=c (c<a)and(c<b) нет да
Последовательные ветвления начало ввод a,b,c d:=a (a<b)and(a<c) нет вывод d конец да d:=b (b<a)and(b<c) нет да d:=c (c<a)and(c<b) нет да Program min2; var a,b,c,d: integer; begin read(a,b,c); if (a<b)and(a<c) then d:=a; if (b<a) and (b<c) then d:=b; if (c<a) and (c<b) then d:=c; writeln('Наименьшее число=',d); end.
Задание 3 Для данного натурального числа N требуется вычислить сумму: S=1+1/2+1/3+…+1/N. Постройте блок-схемы и напишите программы, используя два варианта алгоритма: с циклом-до и с циклом-пока.
Найти сумму S=1+1/2+1/3+…+1/N с циклом-до начало ввод N S:=0 i:=1 S:=S+1/i i:=i+1 i>N нет вывод S конец да
Найти сумму S=1+1/2+1/3+…+1/N с циклом-до начало ввод N S:=0 i:=1 S:=S+1/i i:=i+1 i>N нет вывод S конец да var i, N: integer; S: real; begin readln(N); S:=0; i:=1; repeat S:=S+1/i; i:=i+1 until (i>N); writeln('S=',S:5:3); end.
Найти сумму S=1+1/2+1/3+…+1/N с циклом-пока начало ввод N S:=0 i:=1 S:=S+1/i i:=i+1 i<=N нет вывод S конец да
Найти сумму S=1+1/2+1/3+…+1/N с циклом-пока начало ввод N S:=0 i:=1 S:=S+1/i i:=i+1 i<=N нет вывод S конец да var i, N: integer; S: real; begin readln(N); S:=0; i:=1; while (i<=N) do begin S:=S+1/i; i:=i+1; end; writeln('S=',S:5:3); end.
Задание 4 Какую структуру будет иметь алгоритм решения следующей задачи? Дано целое положительное число N. Если N – четное, то вычислить N!=1·2·3·…·N. Если N – нечетное, то вычислить сумму: 1+2+…+ N. Составьте блок-схему алгоритма решения и опишите его на языке Паскаль.
Задание 4 начало ввод N i:=1; S:=0; P:=1 N mod 2=0 нет вывод S конец да i<=N P:=P*i i:=i+1 i<=N S:=S+i i:=i+1 вывод P да нет N mod 2<>0 да нет
Задание 4 var N, i, P, S: integer; begin read(N); i:=1; P:=1; S:=0; if (N mod 2 = 0) then begin while (i<=N) do begin P:=P*i; i:=i+1; end; writeln(N,'!=',P); end; if (n mod 2 <> 0) then begin while (i<=N) do begin S:=S+i; i:=i+1; end; writeln(' ',N,'=',S); end; end.
Использованная литература Информатика. Базовый уровень: учебник для 10 класса / И.Г. Семакин, Е.К. Хеннер, Т.Ю. Шеина. – М. : БИНОМ. Лаборатория знаний, Информатика. Задачник-практикум в 2 т. / Под ред. И.Г. Семакина, Е.К. Хеннера: Том 1. – М. : БИНОМ. Лаборатория знаний, 2012.