Основы программирования. Логические выражения Условие в ветвлении представляет собой логическое выражение. Оно может содержать арифметические (или другие,

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



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

1 Программирование на языке Паскаль Оператор выбора.
1 Программирование на языке Паскаль Тема 6. Оператор выбора.
1 Программирование на языке Паскаль Тема: Оператор выбора.
1 Программирование на языке Паскаль © К.Ю. Поляков, ВведениеВведение 2.ВетвленияВетвления 3.Сложные условияСложные условия 4.ЦиклыЦиклы 5.Циклы.
1 Программирование на языке Паскаль Тема 2. Ветвления.
Тема урока Переменная. Тип данных. Ввод и вывод данных.
Pascal Алгоритмы разветвляющейся структуры, программирование на языке Pascal 10 «А» класс.
Использование составных логических выражений в условном операторе Паскаля.
Ветвления 8 класс. 2 Основные теоретические сведения Примеры решения задач.
Тест по теме «Линейный алгоритм». 1.Определите значение целочисленной переменной а после выполнения фрагмента алгоритма. а:=247; b:=(a div 100)*10+9;
1 Программирование на языке Паскаль Тема 3. Сложные условия © К.Ю. Поляков,
Презентация на тему: «Программирование Разветвляющихся структур». Составила: учитель информатики Чура Н.А. 1.
1 Программирование на языке Паскаль Тема 3. Сложные условия.
1 Программирование на языке Паскаль Сложные условия.
1 Программирование на языке Паскаль Тема 3. Сложные условия © К.Ю. Поляков,
1 Переменные Переменная – это величина, имеющая имя, тип и значение. Значение переменной можно изменять во время работы программы. Значение Имя Поместится?
1 Программирование на языке Паскаль Тема 4. Циклы.
Операторы языка Паскаль Условные операторы. Оператор условия ЕСЛИ (if) Оператор условия ВЫБОР (case) Условные операторы предназначены для выбора к исполнению.
ТЕМА: «ПРОВЕРКА УСЛОВИЯ» 8 – 9 класс Логунова Наталия Борисовна учитель информатики и ИКТ высшей категории МОСКВА, 2012.
Транксрипт:

Основы программирования

Логические выражения Условие в ветвлении представляет собой логическое выражение. Оно может содержать арифметические (или другие, например, текстовые) выражения и операции сравнения между ними: (больше), = (равно), (не равно), = (больше или равно).

Результат логического выражения – истина (true) или ложь (false). Например, значение выражения 2 > 3 равно false, а выражения 2 c; writeln(a); end. Значение либо true, либо false

Когда требуется составить сложное логическое выражение, содержащее несколько сравнений. В этом случае каждое сравнение помещают в скобки, а между ними используют логические операции and, or или xor. Операция and (И) обозначает одновременность выполнения двух условий. Операция or (ИЛИ) обозначает достаточность выполнения одного из двух условий. Операция xor (Исключающее ИЛИ) обозначает неодновременность выполнения двух условий (только одно из двух условий верно). Кроме того, существует операция отрицания not. Если она стоит перед истинным выражением, в результате получается ложь, а применённая к ложному, даёт истину.

таблицы истинности логических операций

Если в одном выражении используется несколько логических операций, последовательность их выполнения определяется приоритетом: 1) NOT; 2) AND; 3) OR; 4) XOR. Все арифметические операции – более приоритетны, а все операции сравнения – менее приоритетны, чем логические операции. Нужная последовательность операций может быть достигнута применением скобок. Примеры: (2=3) or (2 3) – результат true ((5+5> =10) or (1=2)) and ((2 5)) – результат true (2

Пример задачи с составным условием: Ввести температуру морской воды и определить, можно ли купаться. Благоприятная для купания температура – от 19 до 26 градусов program water; var t:real; begin write(Введите температуру воды у пляжа ); readln(t); if (t>=19) and (t

Ещё пример: Так как поворот Земли вокруг своей оси занимает несколько больше, чем 24 часа, то за 4 года накапливается опережение на одни сутки. Поэтому каждый год, кратный 4, является високосным (на 1 день больше). Но эти расчёты тоже неточны: за каждые 100 лет накапливается отставание почти на 1 сутки, поэтому годы, кратные 100 не являются високосными. Но отставание за 100 лет на четверть меньше одних суток, поэтому каждый четырехсотый год увеличивают на день, и годы, кратные 400 являются все же високосными. Программа должна ввести с клавиатуры год и определить, является ли он високосным. Напомню: «a делится на b без остатка» обозначает, что при делении a на b остаток равен 0.

program year; var y:integer; begin write(Введите год ); readln(y); if (y mod 4=0) and ((y mod 1000) or (y mod 400=0)) then writeln(Високосный год) else writeln(Не високосный год); end.

Задачи для домашней работы 1.Даны координаты двух точек А и В. Определить, какая ближе к началу координат. 2.Поместится ли a кг апельсинов в b ящиков (вместимость ящика – c кг)? 3.Определить, являются ли три введённых числа длинами сторон прямоугольного треугольника. 4.Программа определяет, поместится ли круг, площадью S 1 в квадрате, площадью S 2. 5.Заданы даты рождения двух человек (число, месяц, год). Определить, кто из них старше.

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

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

13 Формат оператора вывода Для ситуаций, где имеется несколько альтернатив, можно использовать опе­ратор case. Этот оператор называется оператором выбора и имеет следующий вид: case of : ; … : else ; end; Здесь между зарезервированными словами case и of находится, принимающее значение, которое может находиться в одном из списков значений, находящихся слева от двоеточий. Данное выражение называется селектором. Каждый оператор, идущий за двоеточием, отделяется от следующего списка значений точкой с запятой. Ветвь else, отвечающая всем не перечисленным значениям, необязательна. При выполне­нии данного оператора вначале вычисляется значение селектора. Затем выбира­ется тот список, которому принадлежит полученное значение, и выполняется соответствующий оператор. Селектор выбора

14 Программа 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; ни один вариант не подошел

15 Оператор выбора Особенности: после 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;

16 Оператор выбора Особенности: если нужно выполнить только один оператор, слова 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;

17 Оператор выбора Особенности: значения, при которых выполняются одинаковые действия, можно группировать 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; перечисление диапазон смесь

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

19 Задача. Программа-консультант в магазине обуви сообщает, какая обувь находится на той или иной полке, номер которой вводят с клавиатуры. Без применения оператора выбора program polka; var p:integer; begin write(Какая полка Вас интересует? ); readln(p); if p=1 then writeln(Сапоги) else if (p=2) or (p=4) then writeln(Мужские туфли) else if (p>=5) and (p=9) and (p

20 Текст программы с применением оператора выбора program polka; var p:integer; begin write(Какая полка Вас интересует? ); readln(p); case p of 1: writeln(Сапоги); 2,4: writeln(Мужские туфли); 5..8: writeln(Женские туфли) 3,9..12: writeln(Кроссовки) else writeln(Полки с таким номером у нас нет); end; readln; end.

21 Более сложные задачи с применением выбора вариантов: С клавиатуры вводят число летящих ворон. Напечатать это число со словом «ворон», взятом с нужным окончанием. В большинстве случаев окончание зависит от последней цифры: 2181 ворона, 851 ворона, 342(343, 344) вороны, 765 (766, 767, 768, 769, 770) ворон. Но имеется исключение: Если предпоследняя цифра – единица (например, 3211, 412), то независимо от последней цифры будет «ворон». Поэтому в этой задаче выбор варианта применяется совместно с ветвлением:

22 Текст программы «ВОРОНЫ» program vorony; var v,p,pp:integer; begin write(Сколько летит ворон? ); readln(v); p:=v mod 10; {находим последнюю цифру} pp:=v mod 100 div 10; {находим предпоследнюю цифру} if pp=1 then writeln(Летит,v, ворон) else case p of 1: writeln(Летит,v, ворона); 2..4: writeln(Летит,v, вороны); else writeln(Летит,v, ворон); end; readln; end.

Задачи на выбор варианта: В каждой из ниже перечисленных задач использовать выбор не менее чем из 5 вариантов (если условие явно не задаёт конкретное число вариантов). 1.Колдун должен сделать очередной ход. По нажатию на любую клавишу генерируется случайное число от 1 до 10, и программа печатает, какое заклинание произнёс колдун. Например, 1- удар молнии; 2 – огненный шар … 2.На экране печатается прайс-лист, в котором перечислено оборудование и цены. Нужно ввести номер требуемого оборудования, затем указать количество, и программа должна выдать стоимость покупки. 3.Покупатель вводит имеющуюся у него сумму и количество порций мороженого, а программа называет, какое мороженное можно приобрести на такую сумму (цены выражаются целым числом). Если по указанной цене мороженого нет, программа сообщает об этом. 4.Разведчик получает закодированное числами сообщение. Каждое число обозначает какое-либо слово. Нужна программа-декодер, которая получает число и выдаёт слово. 5.Микки-Маус подходит к стене с отверстиями. Над каждым отверстием стоит номер. Некоторые ходы ведут в ловушку, некоторые – к запасам зерна, сыра, муки и т. д. Нужна программа, которая по введённому номеру сообщает, куда попадёт Микки-Маус.

Контрольные вопросы 1.Что такое «Алфавит языка Паскаль»? 2.Перечислите зарезервированные слова в Паскале. 3.Что такое идентификатор? 4.Назовите операции, определенные в языке Паскаль. 5.Что означает «описать тип»? 6.Назовите основные группы типов языка Паскаль. 7.Какие значения допустимы для типа integer? 8.Верно ли, что в Паскаль-программе надо описывать все используемые переменные? 9.Какие значения имеют переменные в начале работы программы? 10.Можно ли менять значения констант?

Контрольные вопросы (часть 2) 1.В описании констант их типы не указываются. Как же определяются типы констант? 2.Что означает термин «вложенные условия»? 3.Какого типа может быть селектор в операторе выбора? 4.Как можно использовать логические константы для записи условий? 5.Указать ошибки в записи оператора: if 1