Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Блок-схемы, изображающие условные операторы

Читайте также:
  1. Дифференцировочные условные рефлексы
  2. Инструментальные условные рефлексы (или обучение методом проб и ошибок)
  3. Классические условные рефлексы
  4. лекция. Түйіндес операторлар. Өз-өзіне түйіндес операторлар. Ортогонал проектрлеу операторы
  5. По признаку связи с другими элементами – условные и безусловные диспозиции, а также диспозиции защищенные и незащищенные.
  6. Сложность булевых функций. Аффинные и неаффинные операторы

 

Вы уже знаете, что составление программы можно изображать геометрическими фигурами - блоками, в результате чего образуется схема программы. Такая конструкция называется блок-схемой.
Какой геометрической фигурой принято обозначать условие? Посмотрите на ниже приведенную конструкцию и вы увидите, что условие изображается ромбом (см. рис. 1).

Рис. 5


Для более ясного понимания использования этих операторов, рассмотрим следующий пример.
Пример 1. Составить программу, после выполнения которой меньшее из двух неравных чисел будет увеличено вдвое, а большее оставлено без изменения.

Блок-схема

Рис. 6
Программа

Program Problem2; { Увеличения меньшего из двух целых чисел вдвое }
uses WinCrt;
var
a, b, c: integer;
begin
write("Введите первое целое число "); readln(a);
write("Введите второе целое число "); readln(b);
if a < b then c:= 2*a
else c:= 2*b;
writeln("Меньшее число ", c div 2);
writeln("Оно же увеличенное вдвое ", c)
end.

После пуска программы вводятся два целых числа и их значения присваиваются переменным a и b. Далее, в операторе if проверяется условие (a<b), если оно выполняется, т.е. a меньше b, тогда выполняются команды в операторе then, переменной c присваивается значение удвоенного числа a, иначе выполняются команды в операторе else, переменной c присваивается значение удвоенного меньшего числа - b.
После этого выводится на экран меньшее число и это же число, но увеличенное вдвое.

Заметьте, в процедуре writeln, кроме вывода информации, выполняется еще и деление переменной c на 2.


В процедуре write (writeln) можно записывать выполнение арифметических операций.

Ещё одно существенное замечание. Вы уже заметили, что перед оператором else точка с запятой не ставится.
Программа имеет один недостаток. В ней не учитывается то, когда введенные числа будут равны. В этом случае на экран надо выдать сообщение: " Числа равны ".

21 Составной оператор — конструкция языка программирования, состоящая из нескольких команд (операторов) языка программирования, но участвующая в программе в качестве единого оператора.

Определение[править | править исходный текст]

Понятие составного оператора появилось в языке программирования Алгол. Введённые в этом языке структурные операторы (ветвление, цикл) были организованы таким образом, что в них могла использоваться только одна команда языка. Чтобы не ограничивать программиста, в язык было введено понятие составного оператора: любой набор операторов, размещённый между ключевыми словами begin и end, с точки зрения транслятора становился одной командой (оператором) и мог использоваться в любом месте программы, где следует использовать один оператор.

Примеры использования[править | править исходный текст]

Понятие составного оператора было унаследовано языком Паскаль и множеством других языков программирования, основанных на Алголе. В Паскале условный оператор if, циклы while и for требуют в качестве ветвей и тела один оператор, поэтому при необходимости разместить в ветвях условного оператора или теле цикла несколько команд используются составные операторы:

if условие then begin { начало составного оператора }... { несколько операторов } end { конец составного оператора } else begin { начало составного оператора }... { несколько операторов } end; { конец составного оператора } while условие do begin { начало составного оператора }... { несколько операторов } end; { конец составного оператора } for переменная:= значение1 to значение2 do begin { начало составного оператора }... { несколько операторов } end; { конец составного оператора }

Оператор For состоит из заголовка и тела цикла. Он может быть представлен в двух форматах:

for <имя>:= N1 to N2 do

<оператор>;

for <имя>:= N1 downto N2 do

<оператор>;

Здесь for … do – заголовок цикла; <имя> – это имя переменной – параметра цикла; N1 – ее начальное значение; N2 – ее конечное значение; < оператор> – тело цикла.Тело цикла может быть простым или составным оператором.Переменная цикла (счетчик), нижняя граница N1 (переменная, константа или выражение) и верхняя граница N2 (переменная, константа или выражение) должны относиться к эквивалентным порядковым типам данных.Если тип нижней или верхней границы не эквивалентен типу счетчика, а лишь совместим с ним, то осуществляется неявное приведение: значение границы преобразуется к типу счетчика, в результате чего возможны ошибки.

Цикл for-to работает следующим образом:

1) вычисляется значение верхней границы N2;
2) переменной цикла присваивается значение нижней границы N1;
3) производится проверка того, что переменная цикла не превосходит N2;
4) если это так, то выполняется <оператор>;
5) значение переменной цикла увеличивается на единицу;
6) пункты 3-5, составляющие одну итерацию цикла, выполняются до тех пор, пока переменная цикла не станет строго больше, чем N2; как только это произошло, выполнение цикла прекращается, а управление передается следующему за ним оператору.
Из этой последовательности действий можно понять, какое количество раз отработает цикл for-to в каждом из трех случаев:
Ø N1 < N2: цикл будет работать N2 - N1 +1 раз;
Ø N1 = N2: цикл отработает ровно один раз;
Ø N1 > N2: цикл вообще не будет работать.

После окончания работы цикла переменная-счетчик может потерять свое значение. Таким образом, нельзя с уверенностью утверждать, что после того, как цикл завершил работу, обязательно окажется, что ее значение равно N2 +1.Поэтому попытки использовать переменную-счетчик сразу после завершения цикла (без присваивания ей какого-либо нового значения) могут привести к непредсказуемому поведению программы при отладке.

Цикл for-downto работает следующим образом:

1) вычисляется значение верхней границы N2;
2) переменной цикла присваивается значение нижней границы N1;
3) производится проверка того, что переменная цикла не меньше N2;
4) если это так, то выполняется <оператор>;
5) значение переменной цикла уменьшается на единицу;
6) пункты 1-3 выполняются до тех пор, пока переменная цикла не станет меньше, чем N2; как только это произошло, выполнение цикла прекращается, а управление передается следующему за ним оператору.

Из этой последовательности действий можно понять, какое количество раз отработает цикл for-downto в каждом из трех случаев:

22целые Диапазон возможных значений целых типов зависит от их внутреннего представления, которое может занимать один, два, четыре или восемь байтов. В табл. 1.1 приводятся названия целых типов, длина их внутреннего представления в байтах и диапазон возможных значений. В отличие от порядковых типов, значения которых всегда сопоставляются с рядом целых чисел и, следовательно, представляются в ПК абсолютно точно, значения вещественных типов определяют произвольное число лишь с некоторой конечной точностью, зависящей от внутреннего формата вещественного числа.23Параметры бывают формальные и фактические. Параметры, которые записываются

в скобках после имени процедуры, называются формальными параметрами. Они

указывают на то, что для выполнения данной процедуры необходимы

дополнительные данные – фактические параметры.

Синтаксически программа на языке Паскаль делится на 2 части: заголовок и программный блок.

Общий вид заголовка:

PROGRAM <имя программы> [( <список файлов> )];

Заголовок программы может отсутствовать. Стандартные файлы INPUT (входной) и OUTPUT (выходной) также могут опускаться, т.к. принимаются по умолчанию.

Блок программы состоит из следующих разделов:

LABEL <описание меток>; - раздел описания меток CONST <описание констант>; - раздел описания констант TYPE <описание типов>; - раздел описания типов VAR <описание переменных>; - раздел описания переменных PROCEDURE <описание процедуры>; - раздел описания FUNCTION <описание функции>; процедур и функций BEGIN <исполнительная часть программы> - раздел операторов END.

При записи параметров необходимо помнить:

· число формальных и фактических параметров должно быть одинаково;

· порядок следования и тип фактических параметров должен совпадать с порядком и типом соответствующих формальных параметров;

· идентификаторы формальных и фактических параметров могут совпадать;

· формальные параметры в языке Турбо Паскаль в заголовке находятся вместе с описаниями и объявлять их в разделе описаний процедуры(функции) не требуется;

· формальные параметры должны иметь простые или ранее определенные типы.

Формальные параметры используются при описании процедуры, и внутри нее действия проиводятся над ними... Фактические параметры подставляются вместо формальных при вызове процедуры в програмее, и когда программа выполняется, действия описанные в процедуре происходят над фактическими параметрами...

Такая система нужна для того чтобы описанную один раз процедуру можно было лекго выполнить в программе много раз, а также для того чтобы данные из процедур можно было передать в основную программу... Список формальных параметров необязателен и может отсутствовать. Если же он есть, то в нем должны быть перечислены имена формальных параметров и их типы, например:

Procedure SB(a: Real; b: Integer; c: Char);

Как видно из примера, параметры в списке отделяются друг от друга точками с запятой. Несколько следующих подряд однотипных параметров можно объединять в подсписки, например, вместо:

Function F(a: Real; b: Real): Real;

Можно написать проще:


Дата добавления: 2015-11-30; просмотров: 47 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.01 сек.)