Простые и сложные условия. Простые и сложные вопросы с точки зрения компьютера Простые вопросы Есть ли жизнь на Марсе? Тебе уже исполнилось 16? Ты пойдешь.

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



Advertisements
Похожие презентации
Условный оператор Структура ветвления. Условный оператор реализует выполнение определённых команд при условии, что некоторое логическое выражение (условие)
Advertisements

Ключевая тема этого задания ЕГЭ – использование вложенных условных операторов, причем в тексте задания фрагмент программы обычно записан без отступов «лесенкой»
Оператор ветвления (условный оператор) позволяет изменить порядок выполнения операторов в зависимости от выполнения некоторого условия (истинности логического.
ТЕМА: «ПРОВЕРКА УСЛОВИЯ» 8 – 9 класс Логунова Наталия Борисовна учитель информатики и ИКТ высшей категории МОСКВА, 2012.
1 Программирование на языке Паскаль Тема 2. Ветвления.
Использование составных логических выражений в условном операторе Паскаля.
1 Программирование на языке Паскаль Тема 3. Сложные условия © К.Ю. Поляков,
Объектно-ориентированный язык программирования. Переменная - эта поименованная ячейка памяти, хранящая какое-либо одно значение (одно число, один фрагмент.
1 Программирование на языке Паскаль Ветвления. 2 Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения:
ВетвлениеВетвлениеопределение Разветвляющимся называется процесс, в котором естественный порядок выполнения нарушается в зависимости от условия.
Оператор ветвления (условный оператор) позволяет изменить порядок выполнения операторов в зависимости от выполнения некоторого условия (истинности логического.
1 Программирование на языке Паскаль Сложные условия.
Тема урока Переменная. Тип данных. Ввод и вывод данных.
Программирование ветвлений на Паскале. Оператор ветвления или условный оператор if then else if - " если ", then - " то ", else - " иначе "
Урок 6 Turbo Pascal Язык профессионального программирования, который назван в честь французского математика и философа Блеза Паскаля (1623–1662) и разработан.
ЦИКЛИЧЕСКИЙ АЛГОРИТМ Цели: -Познакомиться с понятием циклического алгоритма. -Освоить языковые средства для реализации циклических алгоритмов.
Алгоритмы ветвления. Условный оператор 9 класс. Повторение 1. Что такое алгоритм? 2. Какие типы алгоритмов вы знаете? 3. Какой алгоритм называется линейным?
1 Программирование на языке Паскаль Тема 3. Сложные условия © К.Ю. Поляков,
1 Программирование на языке Паскаль © К.Ю. Поляков, ВведениеВведение 2.ВетвленияВетвления 3.Сложные условияСложные условия 4.ЦиклыЦиклы 5.Циклы.
1 Программирование на языке Паскаль Тема 3. Сложные условия.
Транксрипт:

Простые и сложные условия

Простые и сложные вопросы с точки зрения компьютера Простые вопросы Есть ли жизнь на Марсе? Тебе уже исполнилось 16? Ты пойдешь в школу? Ты любишь конфеты? Сложные вопросы На какой планете есть жизнь? Сколько тебе лет? В какую школу ты ходишь? Какие конфеты ты любишь?

Простые вопросы На простой вопрос можно ответить либо «да», либо «нет». Такой ответ содержит всего 1 бит информации, для хранения этого бита нужен всего один логический элемент – триггер, который может находиться в одном из двух устойчивых состояний, которые принято обозначать цифрами «0» и «1». Сложные вопросы На сложный вопрос нельзя ответить «да» или «нет», он предполагает гораздо большее количество информации. Ответы на сложные вопросы могут содержать миллионы байтов. В этом легко убедиться по размеру файла с какой-нибудь фотографией или музыкой.

Булевы переменные Итак, элемент памяти компьютера – триггер – хранит наименьшую единицу информации – один бит. А в Паскале есть надлежащий тип данных для хранения и обработки битов, он называется булевым – по имени английского математика Буля. Другое название этого типа данных – логический. Переменные этого типа объявляются следующим образом. var A, B, C : Boolean; Здесь объявлены три переменных булевого типа.

Значения булевых переменных Булевы переменные, подобно триггеру, могут содержать лишь одно из двух значений: TRUE – «истина» и FALSE – «ложь». Это ключевые слова Паскаля, и попытка присвоить логическим переменным другие значения будет пресечена компилятором. Примеры правильного обращения с булевыми переменными. A:= true; B:= false; C:= B; Грубые ошибки. A:= true; B:= false; C:= B;

Вывод булевых данных С выводом нет проблем, поскольку процедура Writeln напечатает их словами «TRUE» и «FALSE». Вот пример вывода булевых переменных: var B: Boolean; begin B:= false; Writeln(B); B:= true; Writeln(B) end.

Ввод булевых данных Вводить булевы данные чуть сложнее, поскольку процедура Readln, к сожалению, «не умеет» этого делать. Поэтому для ввода булевых значений воспользуемся переменной другого типа, например, строковой. А затем преобразуем введенное значение в булев тип. Значению TRUE будет соответствовать ввод в строковую переменную символа «1», а FALSE – любого другого символа. Тогда ввод булевого значения в переменную B можно осуществить следующим образом:

Пример программы ввода булевых переменных var S : String; B : Boolean; begin Writeln(Введите 1 для TRUE и прочее – для FALSE); Readln(S); if S=1 then B:= true else B:= false end.

Логические выражения Данные логического типа можно получать в результате не совсем обычных вычислений. В этих «вычислениях» порой не увидишь ни чисел, ни арифметических действий, – речь идет о логических выражениях. Например, сравнивая две строки, определяют, равны ли они? Ответом может быть либо «да» (TRUE), либо «нет» (FALSE). А раз так, то результат сравнения можно присвоить булевой переменной.

В приведенном выше примере можно заменить условный оператор следующим выражением: var S : String; B : Boolean; begin Writeln(Введите 1 для TRUE и прочее – для FALSE); Readln(S); B := S=1 end. Здесь справа от знака присваивания стоит логическое выражение S=1, и переменная B будет равна TRUE, если S будет содержать строку «1» и FALSE – в любом другом случае.

Где используют булевы переменные Булевы переменные и выражения можно использовать везде, где требуется условие. Показанные ниже операторы вполне допустимы. if B then { выполняется, если B=true } else { выполняется, если B=false }

Задача Написать программу-«навигатор», принимающую сигналы от спутников. Из космоса видны все улицы города и пробки на них. Условимся, что все возможные маршруты движения от дома до школы известны заранее, а спутник сообщает лишь о том, открыта ли для движения та или иная улица. Если движение открыто, спутник сообщает об этом значением TRUE, а иначе – значением FALSE. Результатом работы программы будет сообщение о том, можно ли проехать в школу.

Вариант 1. Объявление и ввод данных Предположим, путь от дома до школы пролегает по двум улицам следующим образом: Очевидно, что отразить наличие пробок на двух улицах можно двумя булевыми переменными, назовем их A и B. Объявим переменные и введем данные в них. Здесь, как мы условились раньше, значение TRUE вводится цифрой «1». var A, B : Boolean; S: string; begin Write(Улица A: ); Readln(S); A:= S=1; Write(Улица B: ); Readln(S); B:= S=1; ДомУлица АУлица BШкола

Вариант 1. Обработка данных Ясно, что для проезда в школу обе улицы должны быть открыты. Блок-схемой такая ситуация описывается так: А В S:=Проехать невозможно + S:=Можно ехать в школу! + _ _

Вариант 1. Обработка данных Условными операторами это можно выразить следующим образом: S:=Проехать невозможно; if A then if B then S:=Можно ехать в школу!; Исходное значение – «Проехать невозможно» – заносится в переменную S заранее. Оно изменится тогда, когда обе булевы переменные станут равны TRUE. Если после ключевых слов Then или Else опять проверяется условие, то такие операторы условия называются вложенными.

Сложные условия Чтобы избежать нагромождения условных операторов, часто объединяют несколько условий в одно с помощью булевых операций: NOT – логическое НЕ, требует выполнения обратного условия (инверсия); AND – логическое И, требует выполнения всех условий (конъюнкция); OR – логическое ИЛИ, требует выполнения хотя бы одного условия (дизъюнкция). Операции записаны в порядке приоритета, изменить приоритет выполнения можно с помощью круглых скобок.

Блок-схема с использованием сложного условия: А and В S:=Проехать невозможно S:=Можно ехать в школу! + _

Программа с использованием сложного условия: var A, B : Boolean; S: string; Begin Write(Улица A:); Readln(S); A:= S=1; Write(Улица B:); Readln(S); B:= S=1; S:=Проехать невозможно; if A and B then S:=Можно ехать в школу!; Writeln(S); Readln end.

Вариант 2 Теперь рассмотрим другую схему проезда, она показывает, что попасть в школу можно по любой из двух улиц: Тогда, чтобы попасть в школу, достаточно хотя бы одной свободной для проезда улицы: А ИЛИ В. Дом Улица А Улица B Школа

Блок-схема с использованием сложного условия: А or В S:=Проехать невозможно S:=Можно ехать в школу! + _

Программа с использованием сложного условия: var A, B : Boolean; S: string; Begin Write(Улица A:); Readln(S); A:= S=1; Write(Улица B:); Readln(S); B:= S=1; S:=Проехать невозможно; if A or B then S:=Можно ехать в школу!; Writeln(S); Readln end.

Вариант 3 Запишите условие для такой схемы проезда: Дом Улица АУлица B Школа Улица DУлица C Улица E

Вариант 4 И для такой: Дом Улица А Улица B Школа Улица D Улица C

Вариант 5 Здесь путь преграждает шлагбаум. Будем считать, что значение TRUE соответствует опущенному шлагбауму (когда он перекрывает дорогу). Получается, что проезд возможен, если НЕ опущен шлагбаум. ДомШкола Шлагбаум G

Блок-схема для варианта 5: Not G S:=Проехать невозможно S:=Можно ехать в школу! + _

Программа с использованием сложного условия: var G : Boolean; S: string; Begin Write(Шлагбаум G:); Readln(S); G:= S=1; S:=Проехать невозможно; if not G then S:=Можно ехать в школу!; Writeln(S); Readln end.

Вариант 6 Запишите условие для такой схемы проезда: Дом Улица АУлица B Школа Улица DУлица C Улица E Шлагбаум G Шлагбаум F

Итоги Наименьшая единица информации – бит – равна ответу на простой вопрос («да»/«нет»). Память компьютера состоит из элементарных ячеек – триггеров, каждый из которых хранит 1 бит. Подобием триггеров в Паскале являются булевы (логические) переменные, принимающие два значения: TRUE (истина) и FALSE (ложь). Булевы переменные в сочетании с логическими операциями NOT, AND, OR и скобками образуют булево выражение. Скобки используют для изменения естественного порядка выполнения операций. Булевы переменные и выражения используют в условных и циклических операторах.

Задания 1.Что будет напечатано в результате выполнения следующего фрагмента? S:=123; Writeln (S=123); Writeln (S=321); 2.Переведите на русский язык следующее выражение на Паскале. if (S=) and (A or B) then... 3.Придумайте схему проезда, содержащую не менее 6 улиц и трех шлагбаумов и запишите логическое выражение для нее.