Pascal Алгоритмы разветвляющейся структуры, программирование на языке Pascal 10 «А» класс
Pascal Теория
3 Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого. Особенность: действия исполнителя зависят от некоторых условий (если … иначе …). Алгоритмы, в которых последовательность шагов зависит от выполнения некоторых условий, называются разветвляющимися.
словесным Алгоритм, представленный словесным способом описания Начало 1. Команда 1 2. ЕСЛИ условие ТО действие1 ИНАЧЕ действие2 3. Команда 2 Конец
графическим Алгоритм, представленный графическим способом описания Начало Команда 1 Действие 1Действие 2 Команда 2 Конец Условие данет
УСЛОВИЕ ДЕЙСТВИЕ 1 ДЕЙСТВИЕ 2 данет Полная форма ветвления
УСЛОВИЕ ДЕЙСТВИЕ 1 данет Неполная форма ветвления
8 Условный оператор if then begin {что делать, если условие верно} end else begin {что делать, если условие неверно} end; if then begin {что делать, если условие верно} end else begin {что делать, если условие неверно} end; Особенности: перед else НЕ ставится точка с запятой вторая часть ( else …) может отсутствовать (неполная форма) если в блоке один оператор, можно убрать слова begin и end
9 Что неправильно? if a > b then begin a := b; end else b := a; end; if a > b then begin a := b; end else b := a; end; if a > b then begin a := b; else begin b := a; end; if a > b then begin a := b; else begin b := a; end; if a > b then begin a := b; end; else begin b := a; end; if a > b then begin a := b; end; else begin b := a; end; if a > b then begin a := b; end else b > a begin b := a; end; if a > b then begin a := b; end else b > a begin b := a; end; begin end begin end
10 Что неправильно? if a > b then begin a := b; else b := a; if a > b then begin a := b; else b := a; if a > b then begin a := b; end; else b := a; if a > b then begin a := b; end; else b := a; if a > b then else begin b := a; end; if a > b then else begin b := a; end; if a > b then a := b; else b := a; end; if a > b then a := b; else b := a; end; a := b end a := b if b >= a then b := a; if b >= a then b := a;
11 Ввести два целых числа и вывести на экран наибольшее из них. 1 способ решения. Блок-схема начало max:= a ввод a,b a > b? max:= b конец да нет полная форма ветвления блок «решение» вывод max
12 1 способ решения. Программа max := a ; max := b ; полная форма условного оператора program qq; var a, b, max: integer; begin writeln('Введите два целых числа'); read ( a, b ); if a > b then begin end else begin end; writeln ('Наибольшее число ', max); end.
13 2 способ решения. Блок-схема неполная форма ветвления начало max:= a; ввод a,b вывод max max:= b конец да нет b > a? вывод max
14 2 способ решения. Программа неполная форма условного оператора program qq; var a, b, max: integer; begin writeln('Введите два целых числа'); read ( a, b ); max := a; if b > a then max := b; writeln ('Наибольшее число ', max); end.
15 2 способ решения. Программа другая program qq; var a, b, max: integer; begin writeln('Введите два целых числа'); read ( a, b ); max := b; if ??? then ??? writeln ('Наибольшее число ', max); end. max := a; a > b
16 1 способ решения. Блок-схема начало ввод x конец да нет x >= 25? да нет x < = 40? 'подходит''не подходит'
17 Сложные условия Задача. Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он фирме (вывести ответ «подходит» или «не подходит»). Особенность: надо проверить, выполняются ли два условия одновременно. Можно ли решить известными методами? ?
program qq; var x: integer; begin writeln('Введите возраст'); read ( x ); if x >= 25 then if x
19 2 способ решения. Блок-схема начало ввод x да нет x >= 25 и x
program qq; var x: integer; begin writeln('Введите возраст'); read ( x ); if (x >= 25) and (x
21 Сложные условия Простые условия (отношения) >= = Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций: not – НЕ (отрицание, инверсия) and – И (логическое умножение, конъюнкция, одновременное выполнение условий) or – ИЛИ (логическое сложение, дизъюнкция, выполнение хотя бы одного из условий) xor – исключающее ИЛИ (выполнение только одного из двух условий, но не обоих) равно не равно
22 Сложные условия Порядок выполнения (приоритет = старшинство) выражения в скобках not and or, xor, >=, =, Особенность – каждое из простых условий обязательно заключать в скобки. Пример if not (a > b) or (c d) and (b a) then begin... end if not (a > b) or (c d) and (b a) then begin... end
Pascal Практика
1.Написать алгоритм вычисления значения у, если Начало Ввод х ; Если х
Блок-схема начало у:= 12*х*х ввод х х >= 16 у:= 3*х-х*х*х конец да нет вывод у
Программа program qq; var x, у: real; begin writeln('Введите значение аргумента х'); read ( x ); if x >= 16 then у:=12*х*х else у:=3*х-х*х*х; writeln ('у=, у); end.
2. Определить является ли треугольник со сторонами a, b, c равносторонним треугольником. Начало Ввод a,b,c ; Если a=b и b=c то вывод (треугольник равносторонний) иначе вывод (треугольник неравносторонний); Конец. Треугольник является равносторонним, если все стороны равны между собой. Алгоритм
Блок-схема начало ввод a,b,c a=b и b=c конец да нет вывод треугольник равносторонний вывод треугольник неравносторонний
Программа program qq; var x, у: real; begin writeln('Введите длины сторон a, b, c'); read ( a,b,c ); if (a=b) and (b=c) then writeln('треугольник равносторонний') else writeln('треугольник неравносторонний'); end.
3. Найти наибольшее (максимум) среди трёх чисел. Блок-схема начало ввод a,b,c конец да нет a>=b? да нет a > = c? да нет b > = c? a>= b b>a a>=b a>=c c>a>=b c>b>a b>a b>=c max:=amax:=c max:=bmax:=c вывод max
Программа program qq; var a, b, c, max: real; begin writeln('Введите числа a, b, c'); read ( a,b,c ); if a>=b then if a>=c then max:=a else max:=c else if b>=c then max:=b else max:=c; writeln (max); end.
4. Составить программу гадания на ромашке «любит - не любит», взяв за исходное количество лепестков N. начало ввод N Nmod20? конец да нет вывод любит вывод не любит Блок-схема «Любит» если N – число нечетное, т.е. остаток от деления числа N на 2 не равен 0 т.е. N mod 2 0
Программа program qq; var N: integer; begin writeln('Введите количество лепестков'); read ( N ); if N mod 2 0 then writeln('любит') else writeln('не любит'); end.
Решить задачи (написать программы на языке Pascal) 1.Найти наименьшее (минимум) среди трёх чисел. 2.Даны три стороны одного треугольника и три стороны другого треугольника. Определить будут ли эти треугольники равновеликими (т.е. будут ли их площади равны). 3.Подсчитать количество положительных чисел среди чисел a, b, c.
4.Написать алгоритм вычисления значения z, если 5.Определить является ли треугольник со сторонами a, b, c равнобедренным треугольником. 6.Определить является ли треугольник со сторонами a, b, c прямоугольным треугольником.