Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Анализ ситуации и последовательность выполнения команд

Все алгоритмы и программы, которые мы до настоящего момента рассматривали, были линейными, то есть выполнялись последовательно, шаг за шагом, инструкция за инструкцией, независимо от введенных данных. Однако часто бывает необходимо выполнять разные действия в зависимости от того, какое решение было принято. В данной теме мы рассмотрим, как менять порядок выполнения команд по результатам проверки некоторого условия.

 

Проверка условия и ветвление в алгоритме

В предыдущей беседе мы познакомились с логическими выражениями. Именно они используются в Паскале для организации ветвления.

Пусть стоит такая задача:
Если X > 3, то выводим на экран X.
Блок-схема алгоритма решения этой задачи выглядит так (рис. 5.1):

Рис. 5.1. Блок-схема алгоритма, выводящего число, если оно больше трех

 

На языке Паскаль такую схему обрабатывает условный оператор if.

 

Полная и неполная форма оператора if

Формат записи оператора if следующий:
if <условие> then <оператор>.

Пример:
if X > 3 then writeln(X);

Под условием здесь понимается любое выражение, результат которого имеет тип boolean.
Это неполная форма алгоритма с ветвлением.
Изменим немного нашу задачу: Если X >= 3, то вывести на экран X, иначе вывести текст 'Х<3'.

В том и другом случае X необходимо увеличить на 1. Здесь используется расширенный условный оператор — полная форма ветвления: if... then .. else ....

Формат записи оператора: if <условие> then <оператор-да> else <оператор-нет> (см. блок-схему на рис. 5.2).

Рис. 5.2. Блок-схема алгоритма, выводящего число, если оно больше трех, или сообщение «Х<3» в противном случае

 

В общем случае структурная схема условного оператора выглядит так (рис. 5.3).

Рис. 5.3. Структурная схема условного оператора If
(SI, S2, S3 — условные обозначения операторов.)

 

ЗАПОМНИТЕ!
Перед else нельзя ставить точку с запятой.

 

Независимо от формы записи условия, после окончания оператора if программа снова «соединяется» и продолжает выполнять операторы, стоящие после структуры if. Это наглядно демонстрирует рис. 5.3.
Оператор S3 выполняется независимо от того, каким будет результат проверки условия.

 

Рассмотрим задачу определения количества корней квадратного уравнения по дискриминанту (рис. 5.4).

 

ЗАПОМНИТЕ!
При использовании вложенных операторов if слово else относится к последнему if, у которого нет еще else

 

Рис. 5.4. Блок-схема алгоритма, определяющего количество корней квадратного уравнения по дискриминанту

 

Пример 5.1. Анализ дискриминанта квадратного уравнения
program Diskr;
var
A,B,C,D: real;
begin
write('Введите коэффициенты А,В,С:');
readln(A,B,C);
D:=SQR(B)-4*A*C;
if D >= 0 then
if D > 0 then
writeln('Два вещественных корня')
else
writeln('Один вещественный корень')
else
writeln('Нет вещественных корней');
readln end.

 

В этой задаче используется вложенный оператор if.

 

 

Оформление программ

Возможно, вы уже обратили внимание, что во всех приводимых нами примерах мы слегка (на 2-3 позиции) сдвигаем операторы вправо. Таким способом мы выделяем, например, блок описания переменных var, а также операторы основной программы относительно begin и end. Это мы делаем сознательно и хотели бы рекомендовать вам поступать так же. Паскаль прекрасно поймет вашу программу, даже если вы ее всю наберете в одну строку. Однако через несколько дней в ней будет тяжело разобраться даже автору, не говоря уже о других людях.

Мы рекомендуем всегда сдвигать вправо вложенные фрагменты программы относительно точки вложения. Так, например, список переменных, определяемых в разделе var, следует сдвигать относительно слова var, список операторов основной программы — относительно begin и end, а операторы, вложенные в структуру if, — относительно if и else.

При этом соответствующие пары операторов begin и end рекомендуется располагать друг под другом, на одинаковом расстоянии от левого края. Это позволяет в сложной программе отследить, какому оператору begin какой оператор end соответствует, и, например, найти пропущенный оператор.

 

Задание 5.1.
Нарисуйте блок-схему алгоритма й напишите программу, которая анализирует введенное с клавиатуры число и выдает на экран: + удвоенное значение числа, если число положительное; + абсолютное значение числа, если число отрицательное.

Задание 5.2.
Нарисуйте блок-схему алгоритма и напишите программу, которая анализирует введенное с клавиатуры число на четность и сообщает о результате. Используйте операцию нахождения остатка от деления числа на 2.




 

Комментарии:

2011-04-10 ответил Виктор

Нормальные уроки по программированию на Паскале, мне понравилась простота изложения. Доступно и понятно даже для школьников.



2012-11-15 ответил вова

блять нече непонятно



2013-11-06 ответил ВАШ

ВАЩИ НИПАНЯТНА



2013-12-17 ответил Екатерина

Вау



2014-03-09 ответил Иван

Жаль, что перестали писать пояснения,с ними было легче.



2016-08-25 ответил залупа потного коня

Ебать вы дауны, хули тут не понятно?




Добавить свой комментарий:


Введите значение:
 









   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru