1 Программирование на языке Паскаль Ветвления. 2 Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения:

Презентация:



Advertisements
Похожие презентации
1 Программирование на языке Паскаль Тема 2. Ветвления.
Advertisements

1 Программирование на языке Паскаль Оператор выбора.
1 Программирование на языке Паскаль Сложные условия.
1 Программирование на языке Паскаль Тема 3. Сложные условия.
1 Программирование на языке Паскаль Тема 3. Сложные условия © К.Ю. Поляков,
Pascal Алгоритмы разветвляющейся структуры, программирование на языке Pascal 10 «А» класс.
1 Программирование на языке Паскаль © К.Ю. Поляков, ВведениеВведение 2.ВетвленияВетвления 3.Сложные условияСложные условия 4.ЦиклыЦиклы 5.Циклы.
1 Программирование на языке Паскаль Тема 3. Сложные условия © К.Ю. Поляков,
1 Программирование на языке Паскаль Ветвления. 2 Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения:
1 Программирование на языке Паскаль Тема 6. Оператор выбора.
1 Вариант 2. Программа сложное условие program qq; var x: integer; begin writeln('Введите возраст'); read ( x ); and if (x >= 25) and (x = = равно не равно.
1 Программирование на языке Паскаль © К.Ю. Поляков, ВведениеВведение 2.ВетвленияВетвления 3.Сложные условияСложные условия 4.ЦиклыЦиклы 5.Циклы.
1 Программирование на языке Паскаль Тема: Оператор выбора.
АЛГОРИТМИЧЕСКАЯ СТРУКТУРА «ВЕТВЛЕНИЕ». СЛОЖНЫЕ УСЛОВИЯ. 1 Программирование на языке Vb6.
1 Программирование на языке Паскаль Тема 2. Ветвления © К.Ю. Поляков,
Программирование на языке Паскаль Тема 2. Ветвления 1.
1 Программирование на языке Паскаль © К.Ю. Поляков, ВведениеВведение 2.ВетвленияВетвления 3.Сложные условияСложные условия 4.ЦиклыЦиклы 5.Циклы.
Лекция 7. Структура языка С/С++. Операторы ветвления: условный оператор if. Полное ветвление. Неполное ветвление. Оператор множественного выбора switch.
Основы языка Pascal Тема. Оператор ветвления. Алгоритм Алгоритм – это четко определенный план действий для исполнителя.
1 Переменные Переменная – это величина, имеющая имя, тип и значение. Значение переменной можно изменять во время работы программы. Значение Имя Поместится?
Транксрипт:

1 Программирование на языке Паскаль Ветвления

2 Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого. Особенность: действия исполнителя зависят от некоторых условий (если … иначе …). Алгоритмы, в которых последовательность шагов зависит от выполнения некоторых условий, называются разветвляющимися.

3 Вариант 1. Блок-схема начало max:= a; ввод a,b вывод max a > b? max:= b; конец да нет полная форма ветвления блок «решение» Если a = b? ?

4 Вариант 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.

5 Условный оператор if then begin {что делать, если условие верно} end else begin {что делать, если условие неверно} end; if then begin {что делать, если условие верно} end else begin {что делать, если условие неверно} end; Особенности: перед else НЕ ставится точка с запятой вторая часть ( else …) может отсутствовать (неполная форма) если в блоке один оператор, можно убрать слова begin и end

6 Что неправильно? 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

7 Вариант 2. Блок-схема неполная форма ветвления начало max:= a; ввод a,b вывод max max:= b; конец да нет b > a?

8 Вариант 2. Программа program qq; var a, b, max: integer; begin writeln('Введите два целых числа'); read ( a, b ); max := a; if b > a then max := b; writeln ('Наибольшее число ', max); end. неполная форма условного оператора

9 Вариант 2Б. Программа program qq; var a, b, max: integer; begin writeln('Введите два целых числа'); read ( a, b ); max := b; if ??? then ??? writeln ('Наибольшее число ', max); end. max := a; a > b

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 Задания «4»: Ввести три числа и найти наибольшее из них. Пример: Введите три числа: Наибольшее число 15 «5»: Ввести пять чисел и найти наибольшее из них. Пример: Введите пять чисел: Наибольшее число 56

12 Программирование на языке Паскаль Сложные условия

13 Сложные условия Задача. Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он фирме (вывести ответ «подходит» или «не подходит»). Особенность: надо проверить, выполняются ли два условия одновременно. Можно ли решить известными методами? ?

14 Вариант 1. Алгоритм начало ввод x 'подходит' конец да нет x >= 25? да нет x < = 40? 'не подходит'

15 Вариант 1. Программа program qq; var x: integer; begin writeln('Введите возраст'); read ( x ); if x >= 25 then if x

16 Вариант 2. Алгоритм начало ввод x 'подходит' да нет x >= 25 и x

17 Вариант 2. Программа сложное условие program qq; var x: integer; begin writeln('Введите возраст'); read ( x ); if (x >= 25) and (x

18 Сложные условия Простые условия (отношения) >= = Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций: not – НЕ (отрицание, инверсия) and – И (логическое умножение, конъюнкция, одновременное выполнение условий) or – ИЛИ (логическое сложение, дизъюнкция, выполнение хотя бы одного из условий) xor – исключающее ИЛИ (выполнение только одного из двух условий, но не обоих) равно не равно

19 Сложные условия Порядок выполнения (приоритет = старшинство) выражения в скобках 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

20 Истинно или ложно при a := 2; b := 3; c := 4; not (a > b) (a < b) and (b < c) not (a >= b) or (c = d) (a < c) or (b < c) and (b < a) (a c) Для каких значений x истинны условия: (x < 6) and (x < 10) (x 10) (x > 6) and (x < 10) (x > 6) and (x > 10) (x < 6) or (x < 10) (x 10) (x > 6) or (x < 10) (x > 6) or (x > 10) Сложные условия True FALSE (- ; 6) (6; 10) (10; ) (- ; 10) (- ; 6) (10; ) (- ; ) (6; ) x < 6x < 6 x > 10 x < 10 x > 6x > 6 True

21 Задания «4»: Ввести номер месяца и вывести название времени года. Пример: Введите номер месяца: 4 весна «5»: Ввести возраст человека (от 1 до 150 лет) и вывести его вместе с последующим словом «год», «года» или «лет». Пример: Введите возраст: Вам 24 года Вам 57 лет

22 Программирование на языке Паскаль Оператор выбора

23 Оператор выбора Задача: Ввести номер месяца и вывести количество дней в этом месяце. Решение: Число дней по месяцам: 28 дней – 2 (февраль) 30 дней – 4 (апрель), 6 (июнь), 9 (сентябрь), 11 (ноябрь) 31 день – 1 (январь), 3 (март), 5 (май), 7 (июль), 8 (август), 10 (октябрь), 12 (декабрь) Особенность: Выбор не из двух, а из нескольких вариантов в зависимости от номера месяца. Можно ли решить известными методами? ?

24 Алгоритм начало конец выбор ни один вариант не подошел ввод M да нет M = 1? D := 31; нет M = 2? D := 28; да нет M = 12? D := 31; да вывод D ошибка

25 Программа program qq; var M, D: integer; begin writeln('Введите номер месяца:'); read ( M ); case M of 2: begin D := 28; end; 4,6,9,11: begin D := 30; end; 1,3,5,7,8,10,12: D := 31; else D := -1; end; if D > 0 then writeln('В этом месяце ', D, ' дней.') else writeln('Неверный номер месяца'); end. program qq; var M, D: integer; begin writeln('Введите номер месяца:'); read ( M ); case M of 2: begin D := 28; end; 4,6,9,11: begin D := 30; end; 1,3,5,7,8,10,12: D := 31; else D := -1; end; if D > 0 then writeln('В этом месяце ', D, ' дней.') else writeln('Неверный номер месяца'); end. case M of 2: begin D := 28; end; 4,6,9,11: begin D := 30; end; 1,3,5,7,8,10,12: D := 31; else D := -1; end; case M of 2: begin D := 28; end; 4,6,9,11: begin D := 30; end; 1,3,5,7,8,10,12: D := 31; else D := -1; end; ни один вариант не подошел

26 Оператор выбора Особенности: после case может быть имя переменной или арифметическое выражение целого типа ( integer ) или символьного типа ( char ) case i+3 of 1: begin a := b; end; 2: begin a := c; end; end; case i+3 of 1: begin a := b; end; 2: begin a := c; end; end; var c: char;... case c of 'а': writeln('Антилопа'); 'б': writeln('Барсук'); else writeln('Не знаю'); end; var c: char;... case c of 'а': writeln('Антилопа'); 'б': writeln('Барсук'); else writeln('Не знаю'); end;

27 Оператор выбора Особенности: если нужно выполнить только один оператор, слова begin и end можно не писать нельзя ставить два одинаковых значения case i+3 of 1: a := b; 1: a := c; end; case i+3 of 1: a := b; 1: a := c; end; case i+3 of 1: a := b; 2: a := c; end; case i+3 of 1: a := b; 2: a := c; end;

28 Оператор выбора Особенности: значения, при которых выполняются одинаковые действия, можно группировать case i of 1: a := b; 2,4,6: a := c; : a := d; 20,21,25..30: a := e; else writeln('Ошибка'); end; case i of 1: a := b; 2,4,6: a := c; : a := d; 20,21,25..30: a := e; else writeln('Ошибка'); end; перечисление диапазон смесь

29 Что неправильно? case a of 2: begin a := b; 4: a := c; end; case a of 2: begin a := b; 4: a := c; end; case a of 2: a := b 4: a := c end; case a of 2: a := b 4: a := c end; ; case a of 2..5: a := b; 4: a := c; end; case a of 2..5: a := b; 4: a := c; end; case a of 0..2: a := b; 6..3: a := c; end; case a of 0..2: a := b; 6..3: a := c; end; 3..6: case a+c/2 of 2: a := b; 4: a := c; end; case a+c/2 of 2: a := b; 4: a := c; end; case a of 2: a := b; d := 0; 4: a := c; end; case a of 2: a := b; d := 0; 4: a := c; end; begin end;

30 Задания (с защитой от неверного ввода) «4»: Ввести номер месяца и вывести количество дней в нем, а также число ошибок при вводе. Пример: Введите номер месяца: Введите номер месяца: -2 2 Введите номер месяца: В этом месяце 28 дней. 11 Вы вводили неверно 0 раз. В этом месяце 30 дней. Вы вводили неверно 1 раз. «5»: Ввести номер месяца и номер дня, вывести число дней, оставшихся до Нового года. Пример: Введите номер месяца: 12 Введите день: 25 До Нового года осталось 6 дней.