blok-shema.ppt
- Количество слайдов: 27
Алгоритм – это четкий порядок действий для решения задачи. Алгоритм называется линейным, если все его действия выполняются в той последовательности, в которой они записаны, то есть по порядку
Начало/конец Блок-схема алгоритма это представление алгоритма в виде геометрических фигур, соединённых стрелками Ввод/вывод Вычисление Условие
Пример: Найти расстояние между двумя пешеходами, вышедшими одновременно навстречу другу. Начальное расстояние L 0, скорость первого пешехода V 1, второго V 2, время в пути T. Начало L 0=20 км Ввод V 1, V 2, L 0, T V 1=4 км/час V 2=5 км/час T=2 часа L : = L 0 – T(V 1 + V 2) Вывод L Конец
Задание: Составить блок-схемы следующих алгоритмов: 1. Дана длина ребра куба (r). Найти площадь грани(SG), площадь полной поверхности(SP) и объем (V) этого куба. SG = r 2; SP = 6·SG; V = r 3 2. Дано А. Не используя никаких действий кроме умножения получить А 8 за три действия. 3. Найти периметр и площадь прямоугольного треугольника по длинам его катетов. Задать a=6, b=8. Ответ p=24, s=24 Решения всех этих задач имеют линейный алгоритм
Алгоритм называется разветвляющимся, если порядок выполнения его действий зависит от некоторого условия. Блок проверки условия - ромб Ветвь НЕТ Условие Ветвь ДА
Задача определения модуля числа с ветвью ДА начало Ввод Х IF X<0 THEN X: = - X если Х<0 то Х< 0 Х: = - X НЕТ Вывод Х конец ДА X=-X
Задача определения модуля числа с двумя ветвями ДА и НЕТ IF X>0 THEN Y: = X ELSE Y: = - X если Х>0 то Y: = X иначе Y: = - X начало Ввод Х Y= –X НЕТ ДА X>0 Вывод Y конец Y=X
Program modul; Var x, y: real; Begin Write(‘x=’); read(x); If x<0 then y: =-x else y: =x; Writeln(‘y=’, y) End.
В программе для проверки условия используется условный оператор. Условный оператор в общем виде IF <условие>THEN<оператор> – короткая форма условного если то оператора IF <условие>THEN<оператор>ELSE<оператор> – полная если то иначе форма условного оператора Короткая форма условного оператора не содержит ветвь НЕТ. Подробнее – если проверка условия дает ответ ДА, выполняется оператор стоящий после THEN. Если проверка условия дает ответ НЕТ, программа переходит к следующему оператору. Полная форма условного оператора содержит ветвь ДА и ветвь НЕТ. Подробнее – если проверка условия дает ответ ДА, выполняется оператор, стоящий после THEN. Если проверка условия дает ответ НЕТ, выполняется оператор, стоящий после ELSE.
После служебных слов THEN и ELSE может использоваться только один оператор. Им может быть любой оператор, в том числе и условный. Тогда получаются вложенные условные операторы. Познакомимся подробнее, что такое <условие>. В рассмотренной задаче это Х>0 или Х<0 Условие состоит их трех частей: <левая часть><знак сравнения><правая часть> Левая и правая части – арифметические выражения, т. е. числа, имена переменных, функции, соединенные знаками +, -, *, / Знаки сравнения: = равно < меньше > больше >= больше или равно <= меньше или равно < >не равно Примеры условий: a>b; x*2=0; sin(a)*2< >sqr(x); 2<=b*2
Задание: 1. Написать алгоритм удвоения меньшего из двух чисел (учесть, что числа могут быть и равны). 2. Напечатать слово «да» , если N=0, напечатать слово «нет» , если иначе. 3. Построить алгоритм, по которому можно определить пройдет ли график функции Y=5 X через заданную точку. 4. Составить алгоритм вычисления значений функции 2 x, если х>0 Y= x 2, если х<0 5. Построить алгоритм определения принадлежности точки с координатами (x, y) кругу радиуса R, центр которого лежит в начале координат.
1. Алгоритм удвоения меньшего из двух чисел начало Вывод ДА X, 2 Y Ввод X, Y ДА Y
1. Алгоритм удвоения меньшего Program udvoenie; Var x, y: real; Begin Write(‘x, y=’); read(x, y); If x
2. Алгоритм да_нет Program dva; начало Ввод N Var n: real; НЕТ Вывод Нет Begin Write(‘n=’); read(n); If n=0 then writeln(‘yes’) else writeln(‘no’) End. ДА N=0 конец Вывод Да
3. Пройдет ли график Y=5 x через точку Program tri; начало Ввод x, y Var x, y: real; Begin НЕТ Вывод ‘не пройдет’ Write(‘x, y=’); read(x, y); ДА y=5 x конец If y=5*x then writeln(‘пройдет’) else writeln(‘не пройдет’) End. Вывод ‘пройдет’
4. Алгоритм вычисления Y Program zadacha_4; Var x, y: real; начало Ввод X НЕТ ДА НЕТ Begin Write(‘x=’); read(x); X<0 X>0 Y=2 X ДА If x>0 then y: =2*x else if x<0 THEN y: =x*x; writeln(‘y=’, y) End. Y=X 2 Вывод Y конец
5. Принадлежит ли точка кругу R Y Y S 0, 0 Если точка лежит на окружности, то расстояние от этой точки до начала координат равно радиусу. X Если точка лежит внутри круга, то расстояние от неё до начала координат меньше радиуса Если точка вне круга – расстояние больше радиуса Расстояние от любой точки до начала координат определяем по теореме Пифагора: S 2=X 2+Y 2
5. Принадлежит ли точка кругу program zadacha_5; начало var x, y, r: real; begin write(‘x, y, r=’); read(x, y, r); Ввод X, Y, R НЕТ 2 X 2+Y 2<=R Вывод No Вывод Yes конец if x*x+y*y<=r*r then writeln(‘yes’) else writeln(‘no’) end. ДА
Составной оператор – это объединение простых операторов с помощью операторных скобок Begin – открывающая скобка End – закрывающая скобка Составной оператор используется в том месте программы, где нужно использовать несколько операторов, а по правилам Паскаля можно написать только один
Составной оператор Решение квадратного уравнения: ax 2+bx+c=0 program kwur; var a, b, c, x 1, x 2, d: real; begin write('a= (a<>0)'); read(a); write('b='); read(b); write(‘c='); read(c); d: =b*b-4*a*c; if d>=0 then begin x 1: =(-b-sqrt(d))/(2*a); x 2: =(-b+sgrt(d))/(2*a); writeln(x 1, x 2); end; else writeln('НЕТ КОРНЕЙ'); end. начало Ввод a, b, c d = b 2 - 4 ac ДА d >= 0 НЕТ Нет корней Вывод x 1 , x 2 конец
В конце программы используется условный оператор: if d>=0 then. . . else. . . На месте многоточия должен стоять один (не более!) оператор. Но ведь при решении квадратного уравнения, если дискриминант неотрицателен, надо проделать несколько действий. Как уместить их в одном операторе? Для этого последовательность операторов помещается между словами BEGIN и END, после чего она превращается в один оператор – составной. Задание Составить программу, изменяющую два введенных числа следующим образом: меньшее число заменить их полусуммой, а большее их удвоенным произведением.
Составной оператор_задание Меньшее заменить полусуммой, большее – удвоенным произведением начало program zadanie; var a, b, s, p: real; Ввод a, b begin write('a, b='); read(a, b); s: =(a+b)/2; p: =2*a*b; s = (a+b)/2; p = 2 ab if ab a b end. ДА a = p; b = s Вывод a, b конец
Сложное условие в условном операторе Сложное условие – это объединение нескольких простых условий с помощью логических операций: И, ИЛИ, НЕ И – логическое умножение (конъюнкция) – AND ИЛИ – логическое сложение (дизъюнкция) – OR НЕ – логическое отрицание (инверсия) – NOT Например: A=5, B=4; (A>B) AND (A=0) равно НЕТ A=0, B=5, C=10; (A>B) OR (B*2=C) равно ДА A= 2; NOT(A=2) равно НЕТ A=0, B=7, C=8; (A=0) or (B=0) or (C=0) равно ДА A=6, B=4, C=1; (A>B) and (B>C) равно ДА
Примеры: 1. Построить алгоритм вычисления значений функции учитывая, что при х = 0 и при х = 1 выражение не имеет смысла. начало ввод Х ДА Х<>0 and X<>1 НЕТ вывод y конец program primer 1; var x, y: real; begin write(‘x='); read(x); if (x<>0) and (x<>1) then begin y: =1/x+1/(x-1); writeln(‘y=‘, y); end. В сложном условии каждое простое условие берется в круглые скобки
2. Написать алгоритм определения принадлежности точки с координатами x, y части плоскости, лежащей между прямыми x=m и x=n. Известно, что m
2. Алгоритм принадлежности точки части плоскости Program tochka; начало Ввод x, m, n Var x, m, n: real; Begin НЕТ Вывод Нет Write(‘x, m, n=’); read(x, m, n); ДА m
3. Даны три числа: A, B, C. Написать алгоритм поиска числа, лежащего между двух других чисел. Например: А В С Ответ Условие 1 2 3 В между А и С А<В<С 3 2 1 В между С и А C<В


