Алгоритмизация и программирование.
Типы алгоритмов: -алгоритмы, в которых символы выполняются последовательно друг за другом. -алгоритм, в который включены команды ветвления или вывода. -алгоритм в который включена команда повторения или выбора. Алгоритмы линейной структуры Разветвляющийся алгоритм Циклический алгоритм
Линейный алгоритм. Пример. Дано а. Не используя никаких функций, получить а8 за три действия с помощью умножения. Алгоритмический язык. алг степень (вещ а,d) арг а рез d нач вещ b,c b:= а*а с:= b*b d:= с*с кон Блок-схема. нач а a*а b b*b c c*c d d кон Программа. 10 REM 20 INPUT a 30 LET b= a*a 40 LET c= b* b 50 LET d= b*c 60 PRINT d 70 END назад
Команда ветвления. Команда ветвления - это составная команда, в которой в зависимости от условия выполняется один из возможных вариантов ветвления. вперед
В разветвляющемся алгоритме Важно правильно сформулировать условие. В программировании под условием понимается предложение, начинающееся со слова «если» и заканчивающееся словом «то». Условие может принимать одно из двух значений- «истина», если оно выполнено, и «ложь», когда не выполнено. От выполнения этого условия зависит дальнейший порядок действий. В качестве простейшего примера можно привести следующее условие: «Если идет дождь, то берем зонт». вперед вперед
Формы команды ветвления нач Полная форма ветвления Неполная форма ветвления условие Серия 1Серия 2 кон нач условие Серия 1 кон Блок-схема вперед
Алгоритмический язык алг ПОЛНАЯ арг рез нач кон ЕСЛИ условие ТО серия 1 ИНАЧЕ серия 2 ВСЕ ЕСЛИ условие ТО серия 1 алг НЕПОЛНАЯ арг рез нач кон вперед
Программа (полная форма) (неполная форма) 10 REM полная 20 INPUT введи; x 30 IF условие THEN 40 ELSE серия 1 50 PRINT 60 GO TO серия 2 80 PRINT 90 END 10 REM неполная 20 INPUT введи;x 30 IF условие THEN 40 ELSE серия 1 50 PRINT 60 END вперед Если - IF То - THEN Иначе- ELSE
Оператор условного перехода в полной форме имеет вид: IF условие THEN серия 1 ELSE серия 2, где серии могут состоять из одной команды, не более. Если команды две или больше, то используют другую форму операторов безусловного перехода: GOTO (где -это номер строки) или операторов условного перехода IF условиеTHEN строки ELSE строки вперед
Слова IF и THEN являются словами из словаря Бейсика. Если условие выполнено, то компьютер будет выполнять то, что указано после THEN. Если нет, он перейдет к выполнению следующей строки. вперед
10 if условие then 20 else серия 1 30 goto серия 2 50 end Т.е.: вперед
Отношения между величинами в качестве условия. Условия разделяются на простые и составные. вперед
Простые условия содержат один знак между величинами. Обычная запись символа Запись символа в программе Обычная запись символа Запись символа в программе вперед
Составные условия Содержат больше знаков отношения, соединенных между собой служебными словами. AND(и)-одновременное выполнение нескольких условий OR(или)-выполняется одно из условий NOT(не, нет)-невыполнение условия вперед
на ч Ввести a,b,c A=0 D=b 2 -4*a*c «Уравнение не квадратное» D>0D>0 X1=(-b- D) / (2*a) X2=(-b+ D) / (2*a) X1, X2 кон Одним из примеров такой разветвляющейся структуры является алгоритм решения квадратного уравнения ax 2 +bx+c=0 Выполнение алгоритма осуществляется в следующем порядке. После ввода значений коэффициентов производится проверка значения а. При а=0 уравнение становится линейным и дальнейшие действия не имеют смысла. Компьютер сообщает нам об этом, и выполнение алгоритма прекращаются. Если значение а отлично от 0, производится вычисление дискриминанта, а затем - его проверка. При D
алг уравнение (вещ а,b,c,x1,x2,x) арг a,b,c рез x1, x2, x нач если а=0 то «уравнение не является квадратным» иначе D=b2-4*a*c если D
Алг полная (вещ x,у) арг x рез у нач если x0 то y=1/x всё кон Алгоритмический язык Вычислить: Y=1/X ПРИМЕР: нач х X=0 кон y данет Y=1/x 10 REM полная 20 INPUT «введи х»; х 30 IF УСЛОВИЕ х0 THEN 50 ELSE PRINT «нет» 40 GOTO LET Y=1/X 60 PRINT Y 70 END программа Блок-схема вперед
ПРИМЕР: y X 2,если x>0 0, если x
Команда повторения- составная команда алгоритмического языка, в которой некоторая серия команд повторяется несколько раз в зависимости от условия. Для алгоритмов с параметром удобнее пользоваться командой повторения с параметром (цикл «ДЛЯ») вперед
Существуют две команды повторения: цикл«ПОКА» и цикл «ДЛЯ» Они отличаются последовательностью выполнения команд, формой записи, а также методом проверки условия. вперед
цикл «ПОКА» цикл «ДЛЯ» Сначала проверяется условие, а затем выполняется некоторая серия команд. Наоборот:сначала выполняется серия команд, а затем проверяется условие. Цикл «Для» используется не всегда,а только в случае, если есть параметр. вперед
Работа циклов. Работает цикл следующим образом: проверяется условие, если оно соблюдается, то серия будет выполнена столько раз, сколько раз соблюдается условие. Как только условие перестает соблюдаться происходит выход из цикла. вперед
Блок-схема. «ПОКА»«ДЛЯ» нач х=х нач х
Алгоритмический язык алг ПОКА арг рез нач х=х шаг пока х
Перевод служебных слов. FOR для от STEP шаг NEXT следующий
Программа. 10 REM пока 20 х=х шаг 30 IF х
ПРИМЕР: Напечатать 5 раз слово «молодец». (цикл «ПОКА») Блок-схема нач х=1 А$= «молодец» х
ПРИМЕР: Напечатать 5 раз слово «молодец». (цикл «ДЛЯ») Блок-схема нач х=1 «молодец» х=х+1 х
Построить график функции y=x rem 20 cls 30 screen 8 40 line (20,160)-(600,160),3 50 line (300,170)-(300,100),3 60 for x=-50 to 50 step y=-(x/6)^2 80 pset (x+300,y+160),2 90 next x 100 end
Пояснение к программе. В формуле y=-(x/6)^2 -означает, что ветви параболы на экране будут направлены вверх коэффициент 1/6 при «х» говорит о сжатии графика вдоль оси ОУ См. продолжение
Пояснение (продолжение). 40 line (20,160)-(600,160),3 - после выполнения этой строки на экране появится ось ОХ 50 line (300,170)-(300,100),3 - на экране появится ось ОУ 80 pset (x+300,y+160),2 - неоходимо прибавить к полученным значениям х и у определенные числа, чтобы график проходил через начало координат результат
Результат в BASIK.
Построить график функции у=sin x 10 rem 20 cls 30 screen 8 40 line (0,95)-(600,95),2 50 line (300,0)-(300,195),2 60 for x=-300 to 600 step y=-50*sin(x/50) 80 pset(x+300,y+95),5 90 next x 100 end Пояснение: 70 y=-50*sin(x/50) При делении на 50 увеличивается частота При умножении на 50 увеличивается амплитуда
Результат в BASIK (график уменьшен)
Вычислить факториал любого числа Р=m! m!=1*2*3*…*m 10 rem 20 let p=1 30 input m 40 for i=1 to m 50 let p=p*i 60 next i 70 print p 80 end нач P=1 m I=1 P=P*I I=I+1 I
Составить игру «угадай число», где n-количество попыток, х-число, которое задумал компьютер, а-число, которое ввел пользователь. просмотр программы
Блок-схема. нач а а=х «угадал»;n «попыток» a>x «введи число меньше» «введи число больше» n=n+1 кон
Программа. 10 rem 20 x= int((rnd(1))*10) 30 n=1 40 input «введи число»;a 50 if a=x then print «угадал за»;n «попыток» else goto if a>x then print введи меньшее число else введи большее число 80 n=n+1 90 goto end
Найти у. 5 у вперед у х 8
нач Х Блок-схема. Х=-5 and X5 Y=-5 кон Алгоритмический язык. алг (вещ х.у) арг х рез у нач если х=-5 и x5 то у=-5 иначе х=8 все все все кон программа Х=8
Программа. 10 rem 20 input x 30 if x=-5 and x5 then y=-5 else print «x=»;8 80 print y 90 end
Пример задачи В плоскости х,у задана заштрихованная область D, ограниченная окружностью и ветвью параболы. Задаются произвольные координаты точки М(х,у). Если точка принадлежит области D, то нужно вычислить функцию по формуле F=e x +e -7, если М(х,у) не принадлежит области D, то F= 3 x+y.
y=x 2 +2 M(x,y) D x y Условие попадания точки М(х,у) внутрь круга радиуса R=5 записывается в виде x 2 +y 2
Блок-схема.Программа. нач. x, y F= 3 x+y x 2 +y 2